我幾乎完成了我的第一個iOS應用程序的1.1版本,其中我對核心數據模型進行了兩項小改動。更具體地說,我已經爲我的一個表添加了兩個屬性。這是我的第一個核心數據應用程序,因此我的第一個核心數據更新爲實時應用程序,對於運行代碼可能無法用於當前用戶的問題,我感到有些不安。由於這是一個小小的更新,我猜Apples自動遷移方法可以,但我不想猜測。使用更新的核心數據模型更新iOS應用程序
相關的代碼如下所示:
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
//NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
在1.1我已經添加NSDictionary *options
。
在我的視圖控制器我確保所需的行不無這樣的:
if (currentPage.inputType == @"drawing") {
[pageView changeToDrawing];
} else if (currentPage.inputType == @"text") {
[pageView changeToText];
} else {
currentPage.inputType = @"text";
[pageView changeToDrawing];
}
基本上是這些變化足以或做我必須做點別的?
感謝您的回答,我有一個相關的問題。我在創建新模型版本之前添加了屬性,是否應該從我的1.0版本中刪除新屬性,並且只在我的2.0數據模型版本中包含它們,或者沒有關係?謝謝! – Anders 2012-01-02 17:48:56
絕對應該從1.0中刪除它們並添加到下一個版本。其實我最近一直在這個位。 1.0應該與當前部署的*完全相同,否則你將會得到一個異常。這包括屬性和關係。 – Jeremy 2012-01-02 18:01:04
啊,謝謝。得到它的工作。按照你的建議。 :) – Anders 2012-01-02 18:03:10