the*_*oid 25 migration iphone cocoa core-data mapping-model
我有一个使用Core Data的iPhone应用程序.
我做了一个更新并使用轻量级迁移从我的MOM(管理对象模型)的V1到V2.这非常有效.
当我想要去我妈妈的V3(及以上)时会发生什么?
另一个问题是确定当前MOM版本的最佳方法是什么?我应该使用isConfiguration:compatibleWithStoreMetadata:
谢谢你的帮助.我很喜欢核心数据.但它有时让我头晕目眩,我感到困惑,这就是我寻求一些圣人智慧的原因.
最初的发布是在几个月前发布的,但我认为最好的答案可以在Marcus Zarra的核心数据手册中找到(或者在代码示例中在线).谷歌的"渐进式云计算"和一个人将找到逐步迭代模型的代码 - 这将允许人们创建从模型n到模型n + 1的映射,同时不用担心在所有模型配对之间创建映射的组合爆炸.
这可能会导致运行时迁移速度变慢.我没有调查过这个.
我使用 createDestinationInstancesForSourceInstance 进行普通迁移。
该代码片段展示了如何重写该方法以及如何获取要迁移的模型的 sourceVersion。实际的迁移发生在辅助类 TZMigrationHelper 中。
- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)sInstance entityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error
{
float sourceVersion = [[[mapping userInfo] valueForKey:@"sourceVersion"] floatValue];
if(sourceVersion <= 0.9)
{
mapping = [TZMigrationHelper addAttributeMappingForDerivedRTFProperties:sInstance mapping:mapping propertyName:@"someProperty"];
mapping = [TZMigrationHelper addAttributeMappingForDerivedRTFProperties:sInstance mapping:mapping propertyName:@"anotherProperty"];
mapping = [TZMigrationHelper addAttributeMappingForDerivedRTFProperties:sInstance mapping:mapping propertyName:@"oneMoreProperty"];
}
return [super createDestinationInstancesForSourceInstance:sInstance entityMapping:mapping manager:manager error:error];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3822 次 |
最近记录: |