2014-03-03 3 views
1

문자열 속성을 BOOL 속성으로 바꾸는 CoreData 저장소 마이그레이션을 구현 중입니다. 문자열이 "0"이고 bool이 "예"여야하며 다른 모든 경우 bool은 "NO"여야합니다. 충분히 간단하게 들리지만 매핑 모델을 추가해야한다고 생각합니다. Xcode에 추가하고 createDestinationInstancesForSourceInstance을 구현했습니다.MagicalRecord로 수동 이전

- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)sInstance entityMapping: (NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error 
{ 
    NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:[mapping destinationEntityName] inManagedObjectContext:[manager destinationContext]]; 

    NSString *oldValue = [sInstance valueForKey: @"oldString"]; 
    NSNumber *newValue = @(NO); 

    if ([oldValue integerValue] == 0) 
     newValue = @(YES); 

    [newObject setValue: newValue forKey: @"newBool"]; 

    [manager associateSourceInstance:sInstance withDestinationInstance:newObject forEntityMapping:mapping]; 

    return YES; 
} 

그러나 이것은 결코 호출되지 않습니다. 내가 MagicalRecord을 사용하고 있기 때문에

, 나는 또한 사용하고 : 내 가게를 초기화하기 때 NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @(YES), NSInferMappingModelAutomaticallyOption: @(NO)};,하지만 난 MagicalRecord와 어떻게 것을 사용합니까 :

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed: @"storename.sqlite"];

을 나는 또한 사용할 필요가 읽어?

업데이트 : 따라서 MR은 MR_autoMigrationOptions을 사용하여 마이그레이션 옵션을 설정합니다. 수동 마이그레이션을 지원하기 위해이를 수정할 수있는 방법이 있습니까? 수동 마이그레이션을 수행하기 위해

답변

1

당신은 사용해야합니다 :

[MagicalRecord setupManuallyMigratingStackWithSQLiteStoreNamed: @"storename.sqlite"];

+0

내가 MR, 당신은 어떤 버전을 사용하고 있는지 가지고 있지 않은거야? – Koen

+1

[MagicalRecord Version 3] (https://github.com/magicalpanda/MagicalRecord/tree/release/3.0) –

+1

아직 출시되지 않은 버전이며 사용하기를 주저합니다. 그러나 어쨌든 고마워. – Koen