当CoreData完成从磁盘读取数据时是否有通知?

时间:2011-10-08 00:08:38

标签: macos cocoa core-data

我有一个使用CoreData的Mac(非文档)应用程序。

启动应用程序时,它会读取存储在文件系统中的数据。

我必须根据使用CoreData存储的信息在 - (void)applicationDidFinishLaunching 中设置一些内容。

所以当我的应用程序从磁盘读取所有内容时,我们会很高兴。

如果我在中进行设置 - (void)applicationDidFinishLaunching 我无效。如果我在几秒钟之后完成它就可以了!

THX!

1 个答案:

答案 0 :(得分:1)

如果您使用自动准备自己内容的对象控制器,您可以观察arrangedObjects以了解他们何时获取了他们的内容。这并不能保证实际对象不是故障。事实上,这是Core Data的主要优势之一:对象是从磁盘上延迟加载的。

如果由于某种原因想要确保在applicationDidFinishLaunching中发生了大多数磁盘活动,则可以执行特定不会将对象作为错误返回的自定义提取。在Core Data文档中查找“预取”。但是,由于内存限制,无法保证Core Data不会在以后故障这些对象,从而在再次加载这些对象时会导致另一个磁盘读取。

您当然也可以使用NSBinaryStoreType,在这种情况下,整个商店在添加到持久性商店协调员时会同步加载到内存中。