我有一个包含两个实体的旧核心数据模型:
第一个实体
FirstString有一个属性:string1,即NSString
第二个实体
SecondString有一个属性:string2,即NSString
他们有一对多的关系:第一个实体< --->>第二实体。
新实体 - “ComboEntity” - 与第一实体和第二实体都有一对一的关系。
现在我有了新实体的核心数据模型
ComboEntity 有一个属性:fullString
问题:
如何迁移数据并将字符串1和字符串2合并为fullString?
谢谢!
答案 0 :(得分:2)
您应该使用自定义映射政策。
@interface FullStringFromTwoStringsMappingPolicy : NSEntityMigrationPolicy
- (NSString *)fullStringForMyEntity:(MyEntity *)myEntity;
@end
@implementation FullStringFromTwoStringsMappingPolicy
- (NSString *)fullStringForMyEntity:(MyEntity *)myEntity
{
return [NSString stringWithFormat:@"%@ %@", myEntity.string1, myEntity.string2];
}
@end
在映射模型中,您将编写一个值表达式,如屏幕截图所示。而不是contactHashMD5,而是你的fullString属性。
致以最诚挚的问候,
斯文。
答案 1 :(得分:0)
CoreData模型版本控制在iOS上有广泛的支持。基本上,您需要创建模型的新版本并在其中创建新实体(可能还留下旧实体)。然后,根据您的需要,您可以从框架中选择不同级别的迁移支持,从简单用nil填充新字段的“轻量级迁移”开始,直到“自定义实体迁移策略”允许您定义将使用nil的回调函数做任意复杂的迁移过程。见here。
在您的情况下,您也可以手动执行迁移,在每个应用程序启动时(或仅检查一次)检查模型是否已经转换,如果没有,则运行一个循环,根据旧实体填充新实体。 / p>