我需要将FTRecord
模型分解为两个FTRecord
和FTEvent
模型。因此,我不能仅使用轻量级迁移,而是需要利用完整的映射。
1)首先,我添加了model version 2
并相应地调整了架构并添加了新的连接关系
FTRecord one-to-many--> FTEvents
和FTEvent one-to-one-->FTRecord
2)我添加了一个Mapping类,并指向我的自定义策略类(见下文)。
3)在FTEventTransformationPolicy : NSEntityMigrationPolicy
我已经定义了将UUID创建为键的函数。
@interface FTEventTransformationPolicy : NSEntityMigrationPolicy
- (NSString*)createId;
@end
@implementation FTEventTransformationPolicy
-(NSString *)createId
{
return [[NSUUID UUID] UUIDString];
}
@end
4)前FTRecord
的其余属性绑定到FTEvent
(我在此处未显示)。现在真正复杂的是
- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)sInstance entityMapping:(NSEntityMapping *)mapping manager:
我在这里很丢失。如何为每个FTEvent
创建old FTRecord
的实例,并将该实例添加到new FTRecord
的{{1}}?