我有以下代码:
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges && !managedObjectContext.save(){
abort()
}
}
}
我有两个错误:调用可以抛出,但没有标记为try并且未处理错误。另一个说不能将type()的值转换为预期的参数类型' Bool'。
我该如何解决这个问题?
答案 0 :(得分:3)
NSManagedObjectContext save()
的文档具有误导性。它在Swift中实际上没有返回值。相反,它可能会引发错误。
您的两个错误是因为您忽略了throws
并将其视为返回Bool
。
您的代码必须类似于:
func saveContext () {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges {
do {
try managedObjectContext.save()
} catch {
print("Unable to save: \(error)")
abort()
}
} else {
abort()
}
}
}
答案 1 :(得分:0)
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let managedContext = appDelegate.persistentContainer.viewContext
do {
try managedContext.save()
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}