我的iOS项目中有两个版本化的数据模型。
数据模型之间的区别在于较新的模型有一个名为“new_col”的新字段。
在项目的某些部分,我需要获取由此“new_col”字段过滤的数据。
所以,我使用了以下代码。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"new_col = %@", val];
[request setPredicate:predicate];
NSArray *results = [context executeFetchRequest:request error:&err];
我遇到了异常 - 'NSInvalidArgumentException',原因:'在实体中找不到keypath new_col ...
我知道这是因为原始数据模型。
我认为我应该将原始数据转换为新的数据模型。
我该如何转换?
答案 0 :(得分:0)
快速Google。
这是Apple支持的,是将用户数据从一种模式迁移到另一种模式的正确方法。
答案 1 :(得分:0)
如果要添加新属性并希望保持向后兼容性,则应为新属性指定默认值,或在核心数据编辑器中将其保留为“可选”。
完成此操作后,您需要确保已启用自动迁移。有关如何执行此操作的详细信息,请参阅Implementation of “Automatic Lightweight Migration” for Core Data。然后,现有/旧实体将采用默认值(如果已定义),如果属性是可选的,则为nil。