OSDN Git Service

バージョンアップ等でCoreDataエンティティが変わった時に自動的に古いストアファイルを削除するようにした
authormasakih <masakih@users.sourceforge.jp>
Thu, 20 Mar 2014 16:04:41 +0000 (01:04 +0900)
committermasakih <masakih@users.sourceforge.jp>
Thu, 20 Mar 2014 16:04:41 +0000 (01:04 +0900)
#50179

KCD/HMCoreDataManager.m

index 9647cf0..75a015d 100644 (file)
@@ -128,9 +128,19 @@ static NSManagedObjectModel *_managedObjectModel = nil;
                                                          };
     NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
     if (![coordinator addPersistentStoreWithType:storeType configuration:nil URL:url options:options error:&error]) {
-        [[NSApplication sharedApplication] presentError:error];
-        return nil;
+               // Data Modelが更新されていたらストアファイルを削除してもう一度
+               if([[error domain] isEqualToString:NSCocoaErrorDomain] && [error code] == 134130) {
+                       [[NSFileManager defaultManager] removeItemAtURL:url error:&error];
+                       if (![coordinator addPersistentStoreWithType:storeType configuration:nil URL:url options:options error:&error]) {
+                               [[NSApplication sharedApplication] presentError:error];
+                               return nil;
+                       }
+               } else {
+                       [[NSApplication sharedApplication] presentError:error];
+                       return nil;
+               }
     }
+       
     _persistentStoreCoordinator = coordinator;
     
     return _persistentStoreCoordinator;