我应该在 processContents Changes: 中做什么?

What am I supposed to do in processContentChanges:?

这是我应用程序的 processContentChanges: 方法,由 NSPersistentStoreDidImportUbiquitousContentChangesNotification:

触发
- (void)processContentChanges:(NSNotification *)notification {    
    [self.managedObjectContext performBlock:^{
        // Merge incoming data updates in the managed object context
        [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification];

        // Post notification to trigger UI updates
#warning What do I actually do here?
    }];
}

我在我的整个应用程序中使用 NSFetchedResultsController,这样当通过 iCloud 从另一台设备接收到更改时,UI 会自动更新。这一切似乎都有效,但是说 // Post notification to trigger UI updates 的评论已经在模板方法中了。我真的应该在这里做点什么吗,或者我可以放心地让事情保持原样吗?

好吧,虽然我还没有确认这一点,但我认为只要满足以下条件,此方法就不需要做任何其他事情:

  1. 您根据模板正确实施NSPersistentStoreDidImportUbiquitousContentChangesNotification,以便将新内容合并到托管对象上下文
  2. 您的内容是使用 NSFetchedResultsController 个对象生成的
  3. 您的 viewControllers 符合 NSFetchedResultsControllerDelegate 协议,并实现了 controllerWillChangeContent:controllerDidChangeContent:controller:didChangeObject:atIndexPath:forChangeType:newIndexPath
  4. 在这些方法中,相应地更新您的视图以显示新内容、删除删除的内容以及更新更改的内容。

如果您有任何对象在没有 NSFetchedResultsController 的情况下使用 CoreData,那么您可能需要在 CoreData 发布 NSPersistentStoreDidImportUbiquitousContentChangesNotification 时通过手动重新获取数据来更新这些对象。