我有一个OS X应用程序,它依赖于NSPersistentDocument和Core Data来处理应用程序的自定义文件类型(将其另存为XML)。
我注意到,当我更新我的核心数据模型时(我正在进行简单的更改,依赖轻量级迁移)只需使用应用程序打开文件即可。使用新模型将更改磁盘上的文件。原始文件的备份版本也会出现在磁盘上(文件名附加了'〜')。一旦发生这种情况,以前(已发布)版本的应用程序就无法打开该文件。
要明确:我只是打开文件。我没有将文件保存回磁盘。我可以在Finder中观看并看到'〜'我打开文件后立即显示。
这似乎是非常危险的行为。我必须非常小心,不要永远打开我的用户群当前正在使用的文件,因为这样做会立即使其无法访问。
这是默认的OS X行为吗?有没有办法配置NSPersistentDocument或我的核心数据模型,以便打开文件将商店内部更改为应用程序,但更改不会传播回磁盘,除非我明确保存?
答案 0 :(得分:0)
核心数据似乎假设如果您使用新程序打开旧文件,则必须继续进行迁移。根据我自己的经验,默认行为是,当文件打开时,它会自动迁移,并且无法再使用以前的版本程序打开。我认为它与哈希数有关,必须更改哈希数以允许新商店打开文件,使其成为文档中的永久更改;所以不,我不认为你可以打开文件,但不会将更改传播回磁盘。也许您可以覆盖一个允许您在开始迁移之前制作副本的方法。
Apple的开发人员库提到了临时文件:
如果迁移成功,则storeURL上的现有商店 在任何文件扩展名和之前使用“〜”后缀重命名 已迁移的商店已保存到storeURL。