为核心数据 NSManagedObject 实现通知的完整示例

Posted

技术标签:

【中文标题】为核心数据 NSManagedObject 实现通知的完整示例【英文标题】:Full Example Of Implementing Notifications For Core Data NSManagedObject 【发布时间】:2013-05-22 20:01:26 【问题描述】:

有人可以为我指出正确的方向,以获得NSManagedObjectContextObjectsDidChangeNotification 的完整实现示例 NSManagedObjectContextDidSaveNotificationNSManagedObjectContextWillSaveNotification

我在这里阅读了对它的引用: 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 更新为核心数据

核心数据迁移:无法将“NSManagedObject_MyType”类型的值转换为“MyModule.MyType”

核心数据 - NSManagedObject(有关系)到 JSON

为关系内部的属性设置值时“无法调用 NSManagedObject 类上的指定初始化程序”(核心数据)

核心数据,NSManagedObject 在应用版本之间发生变化

核心数据 NSObjectInaccessibleException NSManagedObject 已失效