2012-12-27 53 views
4

我想在一個支持sql的Core Data應用程序中實現備份和恢復功能。我可以通過Dropbox成功備份和恢復.sqlite文件,但我有一個關於這種方法的問題。使用Dropbox備份/恢復核心數據的sqlite文件

如果將來我的數據模型發生變化,那麼會有兩種可能的情況發生。

  1. 在較新版本中進行用戶備份並在舊版本的應用程序中恢復。從我的理解,這將導致一些模式錯誤。
  2. 舊版本中的用戶備份並將其恢復到較新的版本。我認爲這個工作會很好,因爲它應該像平常一樣遷移。

如果這個假設是正確的,我該如何處理第一種情況可能出現的問題?

回答

1
  1. 當我做備份時,我將它創建爲zip文件,其中包含plist文件,其中存儲了備份版本。當我恢復時,我檢查該版本,如果備份比當前版本更新,我拒絕恢復。在較舊的應用程序版本中恢復備份沒有任何意義。
  2. 只要你有必要的模型,它會正常工作。
+0

是的,我知道在舊應用程序中恢復備份沒有任何意義,但我無法預測用戶的行爲,因此安全性比抱歉的要好:) – sarunw

+0

您可以共享步驟以在恢復後交換sql文件,我剛剛得到了一些'CoreData無法完成故障'的錯誤。 – sarunw

+0

在更換db文件之前,您必須關閉所有媽媽的持久存儲和moc。否則,你有這個錯誤。有時,在我的應用程序中,不幸的是同樣的事情發生,所以最終在一次更新中,我決定強制應用程序在恢復後退出 - 這打破了蘋果規則,但它的工作。當我有更多的時間,我將不得不修復那個錯誤:) –