如果數據模型發生變化,您可以簡單地檢查數據庫文件的模型。如果它不是新的,則使用NSFileManager
刪除StoreCoordinator中指定的文件,並再次初始化StoreCoordinater和NSManagedContext
以創建一個新文件。
類似的東西(未測試的代碼):
var error: NSError
var applicationDocumentsDirectory: NSURL = NSFileManager.defaultManager().URLsForDirectory(NSDocumentDirectory, inDomains:NSUserDomainMask).lastObject
let storeURL: NSURL = applicationDocumentsDirectory.URLByAppendingPathComponent("Database.sqlite")
NSFileManager.defaultManager().removeItemAtPath(storeURL.path, error)
如果模型沒有改變,你需要在任何地方保存更新的信息。文本文件,位於數據庫本身或UserDefaults中。您只需要一個標誌來檢查數據庫是否已更新/清理。
然後,您也可以像上面那樣刪除數據庫,或者獲取所有對象並刪除它們。
每當用戶打開應用程序時,它會重建核心數據嗎? –
@AldoLazuardi當你想要一個新的數據庫時,取決於你。一種選擇是創建一個文本文件,在其中保存數據庫的版本。如果版本太舊並且需要重建,則刪除存儲文件並重新創建一個空的文件。 – Binarian
刪除-shm和-wal文件以及相關的Store文件 –