我有一个使用 CoreData 的 Mac(非文档)应用程序。
启动应用程序时,它会读取文件系统上存储的数据。
我必须根据使用 CoreData 存储的信息在 -(void)applicationDidFinishLaunching 中设置一些内容。
因此,如果知道我的应用程序何时从磁盘读取所有内容,那就太好了。
如果我在-(void)applicationDidFinishLaunching中进行设置,我将无法工作。如果我几秒钟后执行它,它就会起作用!
谢谢!
最佳答案
如果您使用自动准备自己内容的对象 Controller ,您可以观察 arrangedObjects
以了解它们何时获取内容。这并不能保证实际物体没有缺陷。事实上,这是 Core Data 的主要优势之一:对象是从磁盘延迟加载的。
如果您出于某种原因想要确保大多数磁盘事件都发生在 applicationDidFinishLaunching
中,您可以执行自定义提取,该提取不会将对象作为错误返回。在核心数据文档中查找“预取”。但是,不能保证 Core Data 以后不会由于内存限制而对这些对象产生故障,从而在再次加载这些对象时引发另一次磁盘读取。
您当然也可以使用NSBinaryStoreType
,在这种情况下,整个存储在添加到持久存储协调器时会同步加载到内存中。
关于macos - 当CoreData从磁盘读取数据完成时是否有通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693949/