我一直在使用轻量级迁移来更新数据模型。我想发布一个清理数据库但不迁移数据的版本。最好的方法是什么?有人在App Store上发布了这个吗?
更新
NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @NO,
NSInferMappingModelAutomaticallyOption: @NO};
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
if (![[NSUserDefaults standardUserDefaults] valueForKey:kCleanDB]) {
NSLog(@"Deleting sql database, due to unresolved error %@, %@", error, [error userInfo]);
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:YES] forKey:kCleanDB];
}
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
答案 0 :(得分:2)
您需要做的就是在创建托管对象上下文之前删除启动时的持久存储。
如果您使用Apple的标准模式来创建Core Data堆栈,那么当您访问MOC时,它将创建一个新的空库。
您需要跟踪是否已完成此“升级”。要做到这一点,只需在NSUserDefaults
完成后存储一个标记,并每次检查以确保只执行一次。