Iphone 核心数据迁移-更改属性类型
我有一个使用核心数据持久存储的iOS应用程序。我有几个人在测试应用程序,需要对数据模型进行一些更改,特别是将属性的类型从“NSString”更改为“int16\t” 以下是我迄今为止所做的工作:Iphone 核心数据迁移-更改属性类型,iphone,ios,core-data,magicalrecord,Iphone,Ios,Core Data,Magicalrecord,我有一个使用核心数据持久存储的iOS应用程序。我有几个人在测试应用程序,需要对数据模型进行一些更改,特别是将属性的类型从“NSString”更改为“int16\t” 以下是我迄今为止所做的工作: 创建了一个新的模型版本 更改了属性类型 添加了一个映射模型(我不确定这里需要什么。我有一个自定义策略的OneEntityMapping) 已创建自定义策略(如下所列) 我正在使用MagicalRecord。正在执行迁移,但似乎正在清除数据库。我可以在本地读取SQLite文件,并可以看到表列的更改(但
- 创建了一个新的模型版本
- 更改了属性类型
- 添加了一个映射模型(我不确定这里需要什么。我有一个自定义策略的OneEntityMapping)
- 已创建自定义策略(如下所列)
@implementation MessageLabelMigration
- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)instance
entityMapping:(NSEntityMapping *)mapping
manager:(NSMigrationManager *)manager
error:(NSError **)error {
NSArray *_properties = [mapping attributeMappings];
NSLog(@"_properties: %@", _properties);
for (NSPropertyMapping *_property in _properties) {
if ([[_property name] isEqualToString:@"label"]) {
NSExpression *_expression = [NSExpression expressionForConstantValue:[NSNumber numberWithUnsignedShort:1]];
[_property setValueExpression:_expression];
}
}
return [super createDestinationInstancesForSourceInstance:instance
entityMapping:mapping
manager:manager
error:error];
}
@end
见尼克·韦弗的答案