既存の非ドキュメントコアデータストアからuimanageddocumentにデータをインポートする方法は?
問題は、古いmanagedObjectContextから新しいものにコピーする方法です。
既存の非ドキュメントコアデータストアからuimanageddocumentにデータをインポートする方法は?
問題は、古いmanagedObjectContextから新しいものにコピーする方法です。
答えは、UIManagedDocumentをサブクラス化することです。このサブクラスでは、既存のストアをドキュメントストアにインポート(単にコピー)します。
- (BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)storeURL ofType:(NSString *)fileType modelConfiguration:(NSString *)configuration storeOptions:(NSDictionary *)storeOptions error:(NSError **)error
{
// If legacy store exists, copy it to the new location
NSURL *legacyPersistentStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Guides.sqlite"];
NSFileManager* fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:legacyPersistentStoreURL.path])
{
NSLog(@"Old db exists");
NSError* thisError = nil;
[fileManager replaceItemAtURL:storeURL withItemAtURL:legacyPersistentStoreURL backupItemName:nil options:NSFileManagerItemReplacementUsingNewMetadataOnly resultingItemURL:nil error:&thisError];
NSLog([thisError localizedDescription]);
}
return [super configurePersistentStoreCoordinatorForURL:storeURL ofType:fileType modelConfiguration:configuration storeOptions:storeOptions error:error];
}