0

我的 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 not found in entity ...

我知道这是因为原始数据模型。

我认为我应该将原始数据转换为新的数据模型。

我怎样才能转换?

4

2 回答 2

0

快速谷歌。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html

这是 Apple 支持的,并且是将您的用户数据从一个模型迁移到另一个模型的正确方法。

于 2013-04-08T15:32:35.800 回答
0

如果您要添加新属性并希望保持向后兼容性,您应该为新属性指定一个默认值,或者在核心数据编辑器中将其保留为“可选”。

完成此操作后,您需要确保启用了自动迁移。有关如何执行此操作的详细信息,请参阅Core Data 的“自动轻量级迁移”的实现。然后,现有/旧实体将采用默认值(如果已定义)或 nil 如果属性是可选的。

于 2013-04-08T15:33:13.530 回答