我有一个使用CoreData的Mac(非文档)应用程序。
启动应用程序时,它会读取存储在文件系统中的数据。
我必须根据使用CoreData存储的信息在 - (void)applicationDidFinishLaunching 中设置一些内容。
所以当我的应用程序从磁盘读取所有内容时,我们会很高兴。
如果我在中进行设置 - (void)applicationDidFinishLaunching 我无效。如果我在几秒钟之后完成它就可以了!
THX!
答案 0 :(得分:1)
如果您使用自动准备自己内容的对象控制器,您可以观察arrangedObjects
以了解他们何时获取了他们的内容。这并不能保证实际对象不是故障。事实上,这是Core Data的主要优势之一:对象是从磁盘上延迟加载的。
如果由于某种原因想要确保在applicationDidFinishLaunching
中发生了大多数磁盘活动,则可以执行特定不会将对象作为错误返回的自定义提取。在Core Data文档中查找“预取”。但是,由于内存限制,无法保证Core Data不会在以后故障这些对象,从而在再次加载这些对象时会导致另一个磁盘读取。
您当然也可以使用NSBinaryStoreType
,在这种情况下,整个商店在添加到持久性商店协调员时会同步加载到内存中。