cocoa - 加载使用修改后的实体模型保存的 NSPersistentDocument 时如何保持兼容性?

标签 cocoa core-data

我创建了一个使用实体模型构建器及其相关内容的 OSX 应用程序,为简单起见,请考虑只有两个 NSString 的实体。

该应用程序正在生产中并且工作正常,现在我需要向现有实体添加新属性(仅存在一个实体),但是使用新属性时,旧保存的文件不会打开,应用程序不会默默地打开它们并且控制台不包含任何错误/警告消息。

我需要加载旧的保存文件,考虑所有新属性都是可选的并且具有默认值(也在代码中,而不仅仅是在模型设计中) 所有现有属性继续存在,我只是添加新属性。

如何设计能够在实体模型发生变化时运行的应用程序?

最佳答案

从 OS X 10.5 开始,只要您在新版本中对数据模型进行更改,就有数据迁移功能可以为您提供帮助。

这里有一个很好的基本解释和示例:http://www.timisted.net/blog/archive/core-data-migration/

Apple 文档位于:http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreDataVersioning/Introduction/Introduction.html

关于cocoa - 加载使用修改后的实体模型保存的 NSPersistentDocument 时如何保持兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4601767/

相关文章:

objective-c - 简单简洁的桌面Cocoa NSXMLParser例子?

cocoa - RestKit 2.0 : Mapping - second entitiy nil when not unique

SwiftUI 核心数据,分组列表获取结果

macos - 为 NSSegmentedControl 着色...如何?

cocoa - 如果其他应用程序打开,如何以编程方式启动我的应用程序?

ios - 如何防止 NSTextAttachment 断行?

ios - 如何在 "save"实体 View 中对 "master/parent"实体进行 "detail"(核心数据)?

ios - 核心数据和 NSManagedObject

core-data - 更改谓词后,NSFetchedResultsController 的委托(delegate)不会触发

objective-c - fetchRequestFromTemplateWithName 返回 nil