Ios 从方案中删除实体后的核心数据迁移
对于本例,假设我的核心数据模型如下:Ios 从方案中删除实体后的核心数据迁移,ios,objective-c,core-data,Ios,Objective C,Core Data,对于本例,假设我的核心数据模型如下: Person ------ - firstName (string) - lastName (string) - address (to-one relationship with Address) Address ------- - streetName (string) - streetNumber (int) - person (to-one relationship with Person) 现在,对于我的应用
Person
------
- firstName (string)
- lastName (string)
- address (to-one relationship with Address)
Address
-------
- streetName (string)
- streetNumber (int)
- person (to-one relationship with Person)
现在,对于我的应用程序的下一个版本,我想将我的模型简化为:
Person
------
- firstName (string)
- lastName (string)
- address (string)
如您所见,我从模型方案中删除了地址
实体,并在人员
中添加了一个“地址”字符串属性,而不是与地址
实体的to-one关系
我的问题是如何进行这种迁移
当然,我需要根据新的结构调整我的模型,所以我想做的是检查我所有的Person
对象,然后执行如下操作:
for (Person *per in allPersons) {
NSString *stName = per.address.streetName;
NSString *stNum = per.address.streetNumber;
per.address = [NSString stringWithFormat:@"%@ %@", stName, stNum];
}
问题是地址实体在我的新方案中不再存在,所以我如何才能按.address执行
我想我需要使用迁移管理器或映射模型,只是不确定它将如何帮助我,以及如何使用它。
对于这种用例,我希望有一个简单的例子 您可以使用核心数据中可用的迁移选项,但在这种情况下,仅使用所谓的轻量级迁移是不够的。定制迁移的学习曲线相当可观
另一种选择是只需将地址
实体保留在模型中,以便您可以将其用于“手动”迁移过程。当应用程序第一次使用新方案启动时,使用此实体构造新的地址字符串
在代码的其余部分,您只需忽略它。在我看来,这是最实际、最简单的解决方案。您能举一个例子说明如何进行这种迁移吗?或者参考一个例子,你没什么可做的。只需使用更改属性的名称并添加新的属性(按照链接),然后在第一次运行时在循环中复制它们。我在谈论自定义迁移选项,当然我需要为此创建映射模型?