2013-05-02 148 views
0

我對核心數據模型做了很多更改。過去我們使用簡單的自動遷移。然而這次將會失敗。由於我真的不關心被遷移的數據,我只想在自動遷移失敗並且重新設置時刪除持久性存儲。這是一種有效的方式嗎?任何我必須小心的事情?這可否讓我的應用程序被拒絕?跳過核心數據遷移

回答

1

這樣做有一些明確的問題,你需要小心。 This answer不得不從的NSManagedObjectContext文檔

上下文總是有一個「父」持久存儲協調其 提供了模型和調度請求包含數據的各種執着 商店一些好的建議。沒有協調員,上下文不是完全有效的。上下文的協調器提供被管理的對象模型並處理持久性。從 外部存儲中提取的所有對象都將在全局環境中註冊,同時全局使用 標識符(NSManagedObjectID的一個實例),該標識符用於唯一標識每個對象到外部存儲區。

當面對我們的應用程序之一,類似的情況,我選擇做一個新的持久化存儲,並棄用舊的,因爲我們的老店已經由以往的不良遷移搞砸了我們的許多設備。它最終變得比我希望的更加混亂,但它確實奏效。

您的計劃存在的問題並非不可逾越,我只是建議謹慎。我喜歡Giao使用NSManagedObjectContext重置的建議。在刪除和重建時,持久性商店協調員可能會感到困惑。我擔心,因爲蘋果似乎在幕後做了很多事情。我也擔心,因爲似乎核心數據在發佈的應用程序上的行爲與我們的調試版本不同,特別是在升級過程中。

我認爲你很聰明,認識到你的汽車將有麻煩,並且你正在尋找另一條路。在最近的一段時間裏,我看到一個組織真的必須爭取一個月來處理他們的應用中數據遷移失敗的問題。

+0

您能詳細說明我的方法有哪些類型的問題? – kukudas 2013-05-02 05:57:29

+0

編輯我的回覆以上 – HalR 2013-05-02 06:10:43

+1

@HalR:您鏈接到的問題/答案是關於清空已打開的持久存儲。我覺得這裏的情況要簡單得多:如果'addPersistentStoreWithType'由於遷移問題而失敗,則可以刪除存儲文件並再次調用'addPersistentStoreWithType'。 – 2013-05-02 10:58:41