2014-03-26 51 views
0

我正在更新一個應用程序到一個全新的版本(remade)。一切都將變得更快更省錢。正如其他職位建議,我不能創建模型的另一個版本,因爲我沒有應用程序代碼到以前的版本(我開始了一個新的項目)。我所擁有的就是它的更新包標識符。我將使用核心數據,但是我想刪除正在更新的用戶的所有舊模型和舊數據,就好像他們刪除了應用程序並重新安裝它一樣。我如何實現這一目標?或者不需要刪除任何東西,因爲是不同的模型?我想要的只是防止應用程序在啓動時崩潰。提前致謝。將coreData遷移到一個乾淨的開始

+2

我可以讓你寫下我所有的更新嗎?我讓他們變得更快,更好,更好,但我認爲我從來沒有讓他們成爲**免費的** ......並且多年來我寫了大量的代碼。 –

+0

如果需要,可以通過多種方式獲取模型。模型文件不僅僅是一個凍乾的NSManagedObjectModel實例。您可以加載它,然後輕鬆檢查其內容。這樣你可以執行真正的遷移。 –

+0

我不知道什麼是無錯的哈哈,但實際的版本是可怕的。 – user2387149

回答

1

如果您嘗試使用不允許核心數據理解的模型來打開相同的持久性存儲文件,那麼您會引發異常。因此,可能您需要做的僅僅是使用不同的文件 - 請記住,您需要指定addPersistentStoreWithType:configuration:URL:options:error:中的磁盤位置 - 用於持久存儲,並要求NSFileManager刪除舊文件。

我不認爲有要求刪除已經不存在的文件,所以不需要任何特別複雜的邏輯的懲罰。無論如何,你只是在重複文件管理器的內部功能。

另外,如果您喜歡在同一個文件,在@try/@catch塊附上到addPersistentStoreWithType:...呼叫,並在@catch只要刪除現有的文件,並嘗試addPersistentStoreWithType:...第二次。

+0

謝謝,看起來很值得拍攝 – user2387149