我剛剛做了一個快速搜索,沒有什麼太相關的東西出現在這裏。iOS推出應用更新。需要更新數據庫時保持用戶數據不變
我已經發布了應用程序的第一個版本。自那時以來,我對SQLite數據庫進行了一些更改,在下一個版本中,我將需要更新數據庫結構,但保留用戶的數據。
這是最好的方法是什麼?我目前認爲,在應用程序更新中,我絕不會替換用戶的(文檔文件夾,不是包)數據庫文件,而是使用SQL查詢來更改其結構。
這將涉及跟蹤自上一版本以來對數據庫所做的更改。將所有這些更改編寫到SQL查詢中並運行這些更改以使數據庫達到最新版本。我還需要在數據庫中保留一個字段來跟蹤版本號(爲了簡單起見,與應用版本保持一致)。
除非有特定的鉤子,更新後第一次運行的委託方法會在運行之前將此邏輯的調用放到appDelegate的開頭。
雖然這樣做,我會顯示「更新應用程序」或用戶的東西。
接下來的事情,如果沿線的某處出現錯誤並且更新失敗,會發生什麼情況。該數據庫將過時,應用程序將無法正常工作,因爲它期望更新的版本?
我是否應該自己去刪除用戶的數據庫文件,並將其替換爲應用程序包中的新版本。或者,我應該只是測試,測試,測試,直到所有事情都穩定在我身邊,並且如果在用戶方面出現錯誤,則是另一回事,在這種情況下,我無能爲力,只會丟棄數據。
對此的任何想法將不勝感激。 :)
謝謝!
在應用程序啓動時更改數據庫結構應該沒問題。只要確保這樣做是正確的,並保持用戶在這段時間內不與應用程序交互(應該不會太長)。正如您之前所說的,將版本號保留在默認值中,並在啓動時比較版本號。 – tilo
[AT] John Topley,感謝您的拼寫更正。傻我。 ;) @Tilo這就是我現在正在做的,這似乎是一個很好的方法。謝謝。 :) – conor