2 つの CoreData データベースを移行したいと考えています。Apple 開発者向けドキュメントを読みました。
最初のデータベースでは、新しいバージョンのデータベースにいくつかの属性 (文字列、整数、および日付のプロパティ) を追加しました。すべての手順に従って、最初の手順で移行を正常に完了しました。
しかし、2 番目のデータベースでは、新しいバージョンのデータベースに属性 (文字列、整数、日付、変換可能およびバイナリ データ プロパティ) も追加しました。すべての手順を実行すると (最初のデータベースと同様)、システムはエラー (134130) を返します。
コードは次のとおりです。
if (persistentStoreCoordinator_) {
PMReleaseSafely(persistentStoreCoordinator_);
}
// Notify
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:GCalWillMigrationNotification object:self];
//
NSString *sourceStoreType = NSSQLiteStoreType;
NSString *dataStorePath = [PMUtility dataStorePathForName:GCalDBWarehousePersistentStoreName];
NSURL *storeURL = [NSURL fileURLWithPath:dataStorePath];
BOOL storeExists = [[NSFileManager defaultManager] fileExistsAtPath:dataStorePath];
//
NSError *error = nil;
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];
[persistentStoreCoordinator_ addPersistentStoreWithType:sourceStoreType
configuration:nil
URL:storeURL
options:options
error:&error];
if (error != nil) {
abort();
}
エラーはゼロではなく、以下はログです:
エラー Domain=NSCocoaErrorDomain Code=134130 "操作 完了できませんでした。(Cocoa エラー 134130)" UserInfo=0x856f790 {URL=file://localhost/Users/greensun/Library/Application%20Support/iPhone%20Simulator/5.0/Applications/D10712DE-D9FE-411A-8182-C4F58C60EC6D/Library/Application%20Support/XXX/XXX.sqlite, メタデータ={タイプ=不変辞書、 カウント = 7、エントリ => 2 : {コンテンツ = "NSStoreModelVersionIdentifiers"} = {タイプ = 不変、カウント = 1、値 = ( 0 : {内容 = ""} )} 4 : {内容 = "NSPersistenceFrameworkVersion"} = {値 = +386、タイプ = kCFNumberSInt64Type} 6 : {内容= "NSStoreModelVersionHashes"} = {タイプ = 不変辞書、カウント = 2、エントリ => 0 : {内容 = "XXX"} = {長さ = 32、容量 = 32、バイト = 0xfdae355f55c13fbd0344415fea26c8bb ... 4c1721aadd4122aa} 1 : {内容 = "XXX"} = {長さ = 32、容量 = 32、バイト = 0x7676888f0d7eaff4d1f844343028ce02 ... 040af6cbe8c5fd01} 7 : {contents = "NSStoreUUID"} = {contents = "51678BAC-CCFB-4D00-AF5C-8FA1BEDA6440"} 8: {contents = "NSStoreType"} = {contents = "SQLite"} 9: {contents = "_NSAutoVacuumLevel"} = {contents = "2"} 10: {contents = "NSStoreModelVersionHashesVersion"} = {値 = +3、タイプ = kCFNumberSInt32Type} }, reason=ソース ストアのモデルが見つかりません}
私は多くの解決策を試しましたが、うまくいきません。2 つの新しいバージョンのデータベースに属性を追加するだけで、1 回の移行に成功します。