2012-02-22 40 views
1

我已經找遍了所有的答案,但它似乎像我失去了明顯的東西。我之前已經制作了一個相當複雜的Core Data應用程序,但在過去的幾個月中,這個問題的答案已經不見了。iOS:更新預加載的數據庫,用戶數據混合在

這是問題: 1)我的模型中有大約20個實體。 2)其中一些實體具有用戶可編輯的對象,其他實體具有預加載的數據 3)我想知道是否有可能使用每個新的應用更新來更新預加載的實體。

我知道我可以通過指定每個更新屬性來完成「手動」操作,但這太繁瑣了。一旦用戶打開應用程序的更新版本,我想只更新所有預先加載的實體。我不想觸摸用戶數據。

非常感謝您的幫助!

+0

我遇到同樣的問題。你有沒有找到任何解決方案? – realsnake 2013-08-05 03:40:36

回答

0

您的模式中可以有一個版本號字段,您可以使用該字段將版本號與每條記錄相關聯。如果它有一個值,它是一個預加載。然後對於預加載的東西,只需在應用程序打開時插入新數據,然後忽略/刪除舊數據。看起來很簡單。

UPDATE:

另一種選擇,我相信是你的預加載的數據分成完全不同的數據存儲。我有一個應用程序,我通過自定義SQLite文件和CoreData存儲中的用戶數據傳遞預加載的數據。我可以這樣做,因爲我的預加載數據是隻讀的,這使我無需將SQLite文件複製到文檔目錄中。這意味着,在每次更新時,新的數據文件將根據應用程序安裝自動覆蓋舊數據文件。用戶的數據保持原樣。

當然,如果您的預加載數據不是隻讀的,那麼就沒有辦法編寫代碼。在這種情況下,我可以爲你做的事情不多,沒有關於你的問題的更多細節。

+0

感謝您的輸入!我實際上已經嘗試過這樣做,但我似乎無法使編碼精簡。基本上,每個版本更改需要做的是查看所有實體的版本屬性,然後編程更改已更新的對象的值。有沒有更簡單的方法來做到這一點。例如,我可以使用更新的SQLite文件檢查用戶設備上的現有文件,然後根據需要更新所需的字段? – powertoold 2012-02-23 15:55:39

+0

查看我上面的更新。沒有更多的洞察你的問題,這可能是我能爲你做的最好的。 – QED 2012-02-23 17:11:44

+0

感謝您的幫助。我考慮過擁有兩個不同的持久性商店的可能性,但我已經讀過,我不能在兩家商店之間建立關係,這是我需要做的。 – powertoold 2012-02-23 17:22:21