2010-10-25 121 views
3

考慮一個SQL應用程序的SQLite數據庫,其中包含一些「文檔」作爲模板。用戶也可以添加他自己的模板。更新用於iphone的sqlite數據庫

我想更新程序和數據庫。有沒有機會這樣做而不覆蓋用戶的數據?

我已經考慮過兩個不同的數據庫,但由於這是開銷,我想避免這個選項。

如何在不覆蓋用戶數據的情況下做到這一點?

回答

0

您可以讓應用程序在運行時檢查數據庫的舊版本,並在必要時自行更新它。所以基本上,更新應用程序,它會處理更新數據庫。這將允許您備份/恢復數據(如有必要)。

+0

這是我的想法。 – BobbyShaftoe 2010-10-25 15:33:49

0

更新應用程序及其數據存儲時,在升級包中提供ALTER腳本。當應用程序第一次運行時,它應該:

  • 檢查數據庫是否需要更新(版本號等)
  • 運行ALTERUPDATE腳本採取的架構和數據從V1到V2
1

如果您使用的是核心數據,那麼添加新的數據模型(模式)版本並自動進行「遷移」應該相對容易。通過一些小的更改,您可能需要創建映射模型。如果你的模式正在被重構的實體顯着改變,抽象的級別被添加等等,那麼你可能需要子類化NSEntityMigrationPolicy。

你可能想看看Core Data Model Versioning and Data Migration Programming Guide

你也可以看看馬庫斯Zarra的「核心數據」的書和示例代碼。