我应该在 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
的评论已经在模板方法中了。我真的应该在这里做点什么吗,或者我可以放心地让事情保持原样吗?
好吧,虽然我还没有确认这一点,但我认为只要满足以下条件,此方法就不需要做任何其他事情:
- 您根据模板正确实施
NSPersistentStoreDidImportUbiquitousContentChangesNotification
,以便将新内容合并到托管对象上下文
- 您的内容是使用
NSFetchedResultsController
个对象生成的
- 您的 viewControllers 符合
NSFetchedResultsControllerDelegate
协议,并实现了 controllerWillChangeContent:
、controllerDidChangeContent:
和 controller:didChangeObject:atIndexPath:forChangeType:newIndexPath
- 在这些方法中,相应地更新您的视图以显示新内容、删除删除的内容以及更新更改的内容。
如果您有任何对象在没有 NSFetchedResultsController
的情况下使用 CoreData,那么您可能需要在 CoreData 发布 NSPersistentStoreDidImportUbiquitousContentChangesNotification
时通过手动重新获取数据来更新这些对象。
这是我应用程序的 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
的评论已经在模板方法中了。我真的应该在这里做点什么吗,或者我可以放心地让事情保持原样吗?
好吧,虽然我还没有确认这一点,但我认为只要满足以下条件,此方法就不需要做任何其他事情:
- 您根据模板正确实施
NSPersistentStoreDidImportUbiquitousContentChangesNotification
,以便将新内容合并到托管对象上下文 - 您的内容是使用
NSFetchedResultsController
个对象生成的 - 您的 viewControllers 符合
NSFetchedResultsControllerDelegate
协议,并实现了controllerWillChangeContent:
、controllerDidChangeContent:
和controller:didChangeObject:atIndexPath:forChangeType:newIndexPath
- 在这些方法中,相应地更新您的视图以显示新内容、删除删除的内容以及更新更改的内容。
如果您有任何对象在没有 NSFetchedResultsController
的情况下使用 CoreData,那么您可能需要在 CoreData 发布 NSPersistentStoreDidImportUbiquitousContentChangesNotification
时通过手动重新获取数据来更新这些对象。