我想在我的项目中添加一个新的核心数据实体。我是否需要为此添加新的核心数据模型版本,否则它将在现有版本中运行?该实体是独立的,与其他先前定义的实体无关。
答案 0 :(得分:1)
确实,它需要添加新的模型版本。但是,添加新实体可以由lightweight migration处理,因此至少您不必创建映射模型/编写自定义迁移代码。
<强>更新强>
关于轻量级迁移的文章:
此外,Core Data支持:...更改实体层次结构
- 您可以添加,删除,重命名实体
- 您可以创建新的父实体或子实体,并在实体层次结构中上下移动属性
- 您可以将实体移出层次结构
- 但是,您无法合并实体层次结构;如果两个现有实体不共享源中的公共父级,则它们不能 在目的地共享一个共同的父母
如果您不使用版本控制,您将收到如下错误:
错误域= NSCocoaErrorDomain代码= 134100“(null)” 的UserInfo = {元数据= { NSPersistenceFrameworkVersion = 641; NSStoreModelVersionHashes = { TestEntity1 =; }; NSStoreModelVersionHashesVersion = 3; NSStoreModelVersionIdentifiers =( “” ); NSStoreType = SQLite; NSStoreUUID =“F16AD345-02FE-4E94-B11E-3BC337B16568”; “_NSAutoVacuumLevel”= 2; },reason =用于打开商店的模型与用于创建商店的模型不兼容 userInfo字典{ metadata = { NSPersistenceFrameworkVersion = 641; NSStoreModelVersionHashes = { TestEntity1 =; }; NSStoreModelVersionHashesVersion = 3; NSStoreModelVersionIdentifiers =( “” ); NSStoreType = SQLite; NSStoreUUID =“F16AD345-02FE-4E94-B11E-3BC337B16568”; “_NSAutoVacuumLevel”= 2; }; reason =“用于打开商店的模型与用于创建商店的模型不兼容”; }
这似乎是对我使用版本控制的一个很好的理由)
答案 1 :(得分:0)
在现有模型中添加新实体仍然可以正常使用您的项目, 但是 如果您的应用已经在App Store上运行,则应添加新的基于当前版本的模型版本,并将新实体添加到此版本,以便可以处理轻量级迁移。
如果项目仍在开发中,添加或更改当前模型就可以了。您可能需要删除并重新安装到您的设备上,这样的更改,但正如我所说,如果它仍在生产中,这对您来说不重要。