모델이 변경되어 원본 및 대상 엔티티 수준 매핑이 적어도있는 경우 (예 : 이전 모델에 Vehicle
엔티티가 있고 이제이 데이터를 Car
으로 마이그레이션하려는 경우) 이주 정책이있는 사용자 정의 맵핑 모델.
프로세스가 매우 간단합니다. Xcode에서 프로젝트에 새 매핑 모델 파일을 추가하고 소스 모델 버전과 대상 모델 버전을 선택하십시오. Xcode는 원본 및 대상 엔터티의 특성 간 매핑을 파악하는 데 영리합니다. 그렇게 할 수 없다면 매핑을 공백으로 남겨두고 매핑을 직접 설정할 수 있습니다.
단순 할당 또는 공백 이외의 작업을 수행하거나 매핑 중에 속성의 기본값을 설정하려면 NSEntityMigrationPolicy
이라는 항목을 사용하십시오. 사용자 정의 매핑을 할 수있는이 방법을 자신의 서브 클래스를 생성 및 구현 :
- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)instance
entityMapping:(NSEntityMapping *)mapping
manager:(NSMigrationManager *)manager
error:(NSError **)error {
NSArray *_properties = [mapping attributeMappings];
for (NSPropertyMapping *_property in _properties) {
if ([[_property name] isEqualToString:@"companyName"]) {
NSExpression *_expression = [NSExpression expressionForConstantValue:@"10to1"];
[_property setValueExpression:_expression];
}
}
return [super createDestinationInstancesForSourceInstance:instance
entityMapping:mapping
manager:manager
error:error];
}
사용자 정의 마이그레이션 here을 수행하는 방법에 대한 자세한 내용을보실 수 있습니다.