随着核心数据更新到新版本时,它可以是相当棘手。我经历过很多次,即使核心数据模型中的一点点变化都会导致怪异的应用行为(在某种程度上可以理解)。避免任何不必要的副作用的最简单方法是更改名称。下面的代码
- (NSPersistentStoreCoordinator *) persistentStoreCoordinator {
// D_IN;
if (persistentStoreCoordinator != nil) {
return persistentStoreCoordinator;
}
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
// Allow inferred migration from the original version of the application.
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"myData073.sqlite"]];
NSError *error = nil;
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl
options:options error:&error]){
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
// D_OUT;
return persistentStoreCoordinator;
}
所以你真正需要做的是将名称myData073.sqlite
改为例如myData074.sqlite
的数据模型描述文件是不是真正的二进制文件的一部分,但所有的类和访问方法肯定是它背后的模型。你不必担心这一点。 PS甚至在开发过程中我改名字频繁,否则人们可能会浪费大量的时间寻找编码是不是真的存在错误...
好了,我要去测试了这一点。感谢您的回应! – Rick 2011-04-22 06:10:05
这两个答案都是有用的,虽然这个答案更直接回答我原来的问题所以这就是为什么我接受了这个响应 – Rick 2011-07-28 04:33:29
@Rick具有u尝试了一下。我有一个问题,我在App Store中有一个应用程序,我将发布它的新版本,并且我已经更改了数据库结构,因此对我有帮助。 – 2012-08-03 14:33:01