我的AppDelegate帶着以下所有熟悉的核心數據模板:如何處理NSPersistentContainer.loadPersistentStores中的錯誤?
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "newsapp")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
它也有這樣的評論:
該應用程序的持續容器。此實現 創建並返回一個容器,該容器已將應用程序的商店加載到該容器中。此屬性是可選的,因爲有合法的 錯誤情況可能導致創建存儲失敗。
用代碼替換此實現以正確處理錯誤。
fatalError()
導致應用程序生成崩潰日誌並終止。您不應該在運輸應用程序中使用此功能,儘管它在開發過程中可能很有用。這裏的錯誤典型原因包括:
- 父目錄不存在,無法創建,或不允許寫。
- 由於設備鎖定時的權限或數據保護,永久存儲不可訪問。
- 設備空間不足。
- 商店無法遷移到當前的型號版本。
檢查錯誤消息以確定實際問題是什麼。
真,還是選擇了放棄在這個地方是一個壞主意,不僅它不是在生產中的應用程序允許的,但因爲as I read elsewhere,如果數據存儲被損壞因任何原因,用戶將不得不重新安裝應用程序不知道這一點。在這種情況下,用戶也可以刪除並忘記我的應用。
現在,人們應該怎麼處理這樣的錯誤呢?即使我編寫錯誤處理代碼,如果這些錯誤幾乎從不發生,我該如何測試才能正常工作?
我看了一遍,但找不到任何例子。
我認爲你應該爲它創建一個提醒消息,就是這樣。 – Mannopson