隨着核心數據更新到新版本時,它可以是相當棘手。我經歷過很多次,即使核心數據模型中的一點點變化都會導致怪異的應用行爲(在某種程度上可以理解)。避免任何不必要的副作用的最簡單方法是更改名稱。下面的代碼
- (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