簡體   English   中英

如何強制用應用程序更新替換CoreData存儲?

[英]How can I force replacement of a CoreData store with an App update?

我在AppStore中有一個活動的App,其中包含一個已填充的數據存儲。 現在,我想推送一個具有稍微更新的架構和一組新數據的新版本。 舊數據無關緊要。 如果我只是推送應用程序的新版本,我相信現有用戶會遇到數據存儲不兼容的錯誤……如何避免這種情況? 我不需要遷移現有數據,這些都在新應用程序中。

編輯

僅供參考,這是我在對象管理器中加載持久性存儲的URL:

NSURL *storeURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MyObjects" ofType:@"storedata"]];

編輯:

如果將持久性存儲存儲在主捆綁中(因此它是只讀的),則不必擔心,因為新的持久性存儲(我想也包含在您的應用程序捆綁中)將完全覆蓋舊的持久性存儲。

我認為刪除現有商店文件,然后創建一個新文件應該可以。

如果_storeURL是商店文件的路徑,則可以這樣刪除:

NSError *error = nil;
if ([fileManager fileExistsAtPath:_storeURL.path])
  [fileManager removeItemAtURL:_storeURL error:&error];

當然,僅應在最新應用程序版本的首次啟動時執行此操作。 這可以通過在刪除/重新創建存儲后將密鑰存儲在NSUserDefaults並讓程序僅在啟動時才執行刪除/創建來實現,該密鑰不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM