簡體   English   中英

如何簡單地刪除舊核心數據並重建新核心數據?

[英]How to simply delete old core data and rebuilt the new one?

我嘗試將coreData遷移到新版本,我正在執行以下步驟:

如果您已將應用程序提交到使用早期型號版本的App Store,請在進行任何更改之前添加新的模型版本(選擇name.xcdatamodeld,然后選擇Editor-> Add model Version)。

然后,從Core Data選項卡添加新文件,作為映射模型選擇,源模型(提交的應用程序正在使用的模型版本)目標模型(您已完成更改的模型版本)

資源

但我的數據主要是圖像和應用程序崩潰,因為它需要大量的內存。 所以我想刪除舊數據模型及其數據,並在用戶更新應用程序時創建空的新模型數據。 這該怎么做?

如果數據模型發生更改,您只需檢查數據庫文件的模型。 如果不是新的,請使用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)

Swift 4的更新:

    do
    {
        var applicationDocumentsDirectory: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!
        let storeURL: URL = applicationDocumentsDirectory.appendingPathComponent("Database.sqlite")
        try FileManager.default.removeItem(atPath: storeURL.path)
    }
    catch
    {
        print(error.localizedDescription)
    }

如果模型沒有更改,則需要在任何位置保存更新信息。 數據庫本身或UserDefaults中的文本文件。 您只需要一個標志來檢查數據庫是否已更新/清理。

然后,您也可以刪除上面的數據庫或獲取所有對象並刪除它們。

暫無
暫無

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

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