为核心数据 NSManagedObject 实现通知的完整示例
Posted
技术标签:
【中文标题】为核心数据 NSManagedObject 实现通知的完整示例【英文标题】:Full Example Of Implementing Notifications For Core Data NSManagedObject 【发布时间】:2013-05-22 20:01:26 【问题描述】:有人可以为我指出正确的方向,以获得NSManagedObjectContextObjectsDidChangeNotification
的完整实现示例
NSManagedObjectContextDidSaveNotification
和
NSManagedObjectContextWillSaveNotification
我在这里阅读了对它的引用: http://developer.apple.com/library/ios/#documentation/cocoa/Reference/CoreDataFramework/Classes/NSManagedObjectContext_Class/NSManagedObjectContext.html
但我没有看到完整的示例代码,说明我应该在哪里实现它,以便在我保存上下文时正确更新我的视图。
在当前项目中,我正在 NSManagedObjectContext
中保存和删除,但我的应用程序因某些保存操作而崩溃。据我所知,我需要更新我的视图,以便它们实现NSManagedObjectContextSaveNotification
,但我不知道在哪里将它添加到我的代码中。
是否有我可以在某处下载的示例项目?
【问题讨论】:
您是否尝试过您引用的链接顶部的“相关示例代码”? 【参考方案1】:Magical Record 是一个参考示例:on github。但是,与其查看它并尝试使您的代码正常工作,不如使用 MR 来管理您的核心日期设置。
比使用NSManagedObjectContextSaveNotification
更好的选择可能是使用NSFetchedResultsController
。当它发生时,您不太可能需要所有添加/删除的对象,实际上您只需要一个触发器来刷新 UI,而 FRC 会为您完成。它还将处理根据需要获取所需数据(分页 - 如果您将其配置为这样做)并进行适当排序。
【讨论】:
您为什么会认为使用NSManagedObjectContextDidSaveNotification
是一个“重大配置问题”?观察它是完全合理的。
@TomHarrington 公平点,我的评论有点全权委托和危言耸听。我做了一些改写。谢谢。
您到 github 的链接是处理与 iCloud 同步的核心数据。预期的方法是 -[NSManagedObjectContext mergeChangesFromContextDidSaveNotification:] 并传递从回调接收到的通知。【参考方案2】:
我发现this website 信息量很大。核心数据中的并发性不是一个轻松的话题,但它解决了多线程带来的难题。
【讨论】:
以上是关于为核心数据 NSManagedObject 实现通知的完整示例的主要内容,如果未能解决你的问题,请参考以下文章
核心数据迁移:无法将“NSManagedObject_MyType”类型的值转换为“MyModule.MyType”
核心数据 - NSManagedObject(有关系)到 JSON
为关系内部的属性设置值时“无法调用 NSManagedObject 类上的指定初始化程序”(核心数据)