遵循核心数据编程指南的核心数据绩效page中的建议
关于BLOB的存储,我选择存储我的二进制数据
NSPersistenDocument-based
应用(仅限Leopard,如果有的话
在外部文件中(与文档核心数据分开)
数据存储)并保留对该文件的存档 NDAlias
引用
我的文档的数据存储。
最终,我想要外部数据 文件最终与文档(数据存储)在同一目录中 文件。因为我之前可能需要将数据写入外部数据文件 保存文档(这是一个科学的数据采集应用程序和 如果可能的话,应该避免因崩溃而丢失数据,我已经采取了 以下方法:
我想封装这个外部文件的管理
与模型相关的类,因为我需要相同的功能
在架构迁移期间。因此管理我的外部数据文件
NSPersistentDocument's
子类似乎有误。
在对象中
模型的根对象,我在中创建外部文件
根对象 NSTemporaryDirectory()
方法中的 awakeFromInsert
,并存储引用该数据文件的 NDAlias
。
我希望在发生保存时将外部数据文件移动到与保存的数据存储相同的目录中。
我认为 didSave
是合适的地方
要做到这一点,但在调用 didSave
方法时看起来像
持久存储仍然在临时目录中(大概是
在 FSExchangeObjects'd
之前创建原子保存操作。
我计划将 awakeFromInsert
和 didSave
中的逻辑分解为类
方法,以便在自定义中的模式迁移期间调用它们
实体政策
分别为createDestinationInstancesForSourceInstance:entityMapping:manager:error:
and endInstanceCreationForEntityMapping:manager:error:
。
所以,我的问题是:在 NSPersistentDocument
保存期间,我可以放心,我的根对象 objectID.persistentStore.URL
是“最终”网址保存(例如,用户选择保存文件以保存文档的位置)?