[英]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.