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

标签 macos cocoa core-data

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

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

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

因此,如果知道我的应用程序何时从磁盘读取所有内容,那就太好了。

如果我在-(void)applicationDidFinishLaunching中进行设置,我将无法工作。如果我几秒钟后执行它,它就会起作用!

谢谢!

最佳答案

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

如果您出于某种原因想要确保大多数磁盘事件都发生在 applicationDidFinishLaunching 中,您可以执行自定义提取,该提取不会将对象作为错误返回。在核心数据文档中查找“预取”。但是,不能保证 Core Data 以后不会由于内存限制而对这些对象产生故障,从而在再次加载这些对象时引发另一次磁盘读取。

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

关于macos - 当CoreData从磁盘读取数据完成时是否有通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693949/

相关文章:

macos - OS X 中的并行 STL 算法

xcode - 将 localized.strings 导入 XIB

ios - Objective C 相当于 cURL 来处理 JSON

objective-c - 如何在 View 顶部添加模糊 View ?

ios - 使用 NSFetchRequest 按日期和单元格按时区字母顺序对部分进行排序

node.js - NPM 损坏的 mime-db 丢失

macos - 通过 MacOS High Sierra 中的终端以编程方式更改触摸栏设置

windows - 没有符号的 Windows 和 Mac OS X/Linux 上的调用堆栈

ios - 对象映射器/核心数据,对象映射器 nil 值字段

ios - 将 2 个值组合成一个 NSPredicate