2012-03-28 62 views
1

我創建了一個由10個實體組成的數據模型。幾天後,在其中一個實體中添加了一個屬性。此時,當我運行該應用程序時,該應用程序崩潰了。所以,請幫我解決這個問題。 在此先感謝。在iPhone中的數據模型中添加的數據庫屬性

+0

發佈您的代碼。您的應用在哪一刻崩潰了。你有沒有試圖用斷點來解決它? – Devang 2012-03-28 08:26:35

回答

3

更改模型後,您必須在設備/模擬器上刪除您的應用程序並重新安裝。這是因爲現有的SQLite-DB不適合現在改變的模型。

+0

錯誤。您必須創建一個新的模型版本並在其中創建任何額外的實體/屬性。 – Eimantas 2012-03-28 08:55:33

+2

當然,這將是一個更好的解決方案,尤其是對於已經推出的應用程序。我認爲這不是這種情況。 – 2012-03-28 09:05:47

+0

IMO是從一開始就做正確的事情,而不是在需要時做。 – Eimantas 2012-03-28 09:21:59

-1

你必須讓應用程序乾淨的所有目標,然後建立並從模擬器刪除應用程序,然後構建應用程序

+0

錯誤。您必須創建一個新的模型版本並在其中創建任何額外的實體/屬性。 – Eimantas 2012-03-28 08:55:50

1

如果你還只是發展中的應用,最簡單的答案就是,刪除和重新安裝它。

如果你真的想保留數據庫的內容,核心數據可以自動從你的模式的一個版本遷移到另一個版本(有一定的注意事項)。 See the documentation的細節。

0

如果您不希望應用程序崩潰 - 每次需要將實體或實體的屬性添加到模型時,都必須創建新模型版本並顯示託管對象模型以使用該新版本。

您可以通過以下鏈接創建新型號版本:Editor -> Add Model version...。之後允許自動遷移persistentStoreCoordinator方法應用程序委託的:

NSError *error = nil; 
NSURL *storeURL = <#The URL of a persistent store#>; 
NSPersistentStoreCoordinator *psc = <#The coordinator#>; 
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
    [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

BOOL success = [psc addPersistentStoreWithType:<#Store type#> 
        configuration:<#Configuration or nil#> URL:storeURL 
        options:options error:&error]; 
if (!success) { 
    // Handle the error. 
} 
+1

在開發應用程序時,這看起來過於誇張。 – 2012-03-28 09:16:00

+0

海事組織關於從一開始就做正確的事情,而不是在需要時做。 – Eimantas 2012-03-28 09:22:12