我有一个托管对象模型,它只包含一个实体Person
。在模型版本1中,Person
具有id
和name
属性。在版本2中,我添加了phone
属性,并使用自定义映射模型增加了每个人的id
。后来我创建了版本3,删除了phone
属性。这里版本1和版本3意外相同,如下所示:
MOM ver | v1 | v2 | v3
---------+-----------+-----------+-----------
Entity | Person | Person | Person
Attrs | - id | - id | - id
| - name | - name | - name
| | - phone |
| ^ | ^
`--------' `-------'
Mapping: * Add phone * Remove phone
* Increment id
使用此模型,为模型版本1创建的商店具有与版本3完全相同的模式。无法确定用户是否具有旧版本的商店,该版本需要具有必要副作用的迁移或具有最新版本版本
所以这是我的问题:当我有两个相同的模型版本时,如何判断商店是否足够迁移?也许通过在商店中放置一个版本信息,但如何和什么信息?或者我应该非常小心不要创建这样的版本?
答案 0 :(得分:1)
你每次都添加一个新的模型版本,对吗? 每个模型都应具有唯一的模型标识符。在数据模型中选择.xcdatamodel,id将显示在Interface Builder中的Core Data Model下。 我喜欢给他们像1.0,2.0这样的ID ...对应于实际的应用版本。
这是一个字符串,如果需要迁移或您需要的其他内容,您可以签入代码:
[[[self objectModel] versionIdentifiers] anyObject]