[英]How to handle a CoreData crash in iOS Swift?
我需要處理核心數據崩潰。 我的代碼在ManagedObjectContext.save()上崩潰了。 但是catch塊沒有捕獲任何異常。 為了避免崩潰,我該如何更好地編寫Catch塊,這是我的代碼。
do {
try managedObjectContext.save()
}
catch let error as NSError {
Print.print("Error saving data store: \(error)")
}
這是使用CoreData保存數據的示例。這可能對您有所幫助。
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
if let entity = NSEntityDescription.entity(forEntityName: "Employees", in: context){
let myItem = NSManagedObject(entity: entity, insertInto: context)
myItem.setValue(nameTF.text, forKey: "names")
myItem.setValue(15655, forKey: "mobileNo")
do {
try context.save()
}catch let nserror as NSError{
print("ERROR: Coredata error \(nserror)")
}
}
這真的看起來像您弄亂了上下文的初始化,持久性存儲及其協調器一樣。 您最好調查一下。 類似的還有帖子已經在這么喜歡這一個 。
更重要的是,您不會在Swift中使用try-catch
攔截此類異常。 實際上,Swift try-catch
與異常沒有任何關系,但是是一種高級API,可讓您攔截報告的錯誤。 就您而言,您只是攔截了將數據保存到數據庫時可能報告的錯誤。 但是錯誤似乎更深了。
更進一步,整個核心數據仍然完全在objectiveC中,它具有完全不同的引發異常的系統,盡管可以使用objectiveC try-catch
截獲那些異常,但是同一異常將不會被Swift截獲。 該系統所做的只是替換了將錯誤的指針輸入到.save(&error)
中使用的.save(&error)
方法。 而且,只有在此錯誤為非null時,您的catch塊才會觸發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.