2016-01-23 64 views
0

我有一個從sqlite數據庫讀取的應用程序。我最近更新了數據庫並希望包含新的數據庫,因此我刪除了舊數據庫(選擇「移至廢紙簍」),並將其替換爲新數據庫。數據似乎仍然反映了舊版本。我再次刪除數據庫,思維應該觸發錯誤時的代碼來關注一下吧RAN:如何更新我的iPhone應用程序上的數據庫?

let path = NSBundle.mainBundle().pathForResource("members", ofType:"sqlite3")

,但應用程序仍運行正常(全部在我的模擬器)。它隱藏在我需要刪除參考的地方嗎?這會對我的用戶造成問題嗎?它的結尾是隻讀的。

編輯:

的模式並沒有改變,這只是一些新的或更新的數據。我迷路了。

+0

從設備上刪除應用程序並進行乾淨的構建。 – rmaddy

回答

2

所以,要解決這個問題,你需要從設備上刪除你的應用程序,比數據庫也會被刪除。之後,執行完整的項目清理並再次運行應用程序,它應該工作正常。但是,如果我理解正確 - 有時您會更改數據庫,並希望用戶也看到此更改。 爲了這個目的,我會建議使用Parse服務:它使用簡單,也是免費的。所有需要的信息,你可以在這裏找到http://parse.com/

或其它溶液使用數據庫遷移系統:

1)關於遷移問題:Best practices for in-app database migration for Sqlite

2)庫,方便管理的遷移:https://github.com/layerhq/FMDBMigrationManager 希望它可以幫助你。

+0

對於這麼簡單的事情來說,這看起來太多了。重新命名我的新數據庫並更新我的代碼以反映我會錯嗎? – thumbtackthief

+0

您可以更新代碼,但使用舊版本的用戶可能不會更新應用程序。如果他們將下載新的應用程序版本 - 這可能工作。但這並不是強制用戶更新應用程序的最佳解決方案,因爲數據已更改。如果真的發生了一些變化(例如「添加新模式或某些功能」),如果添加了新內容,則應強制更新。你需要記住,我們的用戶真的很懶,他們做的更好的應用程序越少。所以你應該自己決定。您也可以重寫核心數據使用的代碼並使用他們的遷移 - 它應該比直接使用SQLite更容易。 – Volodymyr

+0

重命名數據庫將在設備上創建新的存儲,但舊的存儲也會出現在那裏。至於我這樣做是錯誤的,因爲你不是在改變數據庫,而是在創建新的數據庫,舊的數據庫將採用與以前相同的存儲量,因爲這並不是真的。 – Volodymyr

相關問題