无法将type()的值转换为期望的参数类型bool(Swift)?
我有以下代码:无法将type()的值转换为期望的参数类型bool(Swift)?
func saveContext() {
var error: NSError? = nil
let managedObjectContext = self.managedObjectContext
if managedObjectContext != nil {
if managedObjectContext.hasChanges && !managedObjectContext.save(){
abort()
}
}
}
我有两个错误:调用可以抛出,但没有打上尝试,并没有被处理的错误。另一个说不能将type()的值转换为期望的参数类型'Bool'。
我该如何解决这个问题?
的文档有误导性。它在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()
}
}
}
https://developer.apple.com/reference/coredata/nsmanagedobjectcontext/1506866-save误导哪里? –
@MartinR在Swift中,它记录了一个返回值,尽管它没有返回值。 – rmaddy
只有Objective-C视图。 Swift视图被记录为'func save()throws' –
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)")
}
评论的一句话? – Losiowaty
仅有代码的答案在这里不受欢迎。请解释什么是错的,以及你的答案如何解决这个问题。 – rmaddy
问题是如何解决这个问题;) – Retterdesdialogs
什么是您的部署目标? – Retterdesdialogs
请注意,有* [许多* Q&A'关于'[迅速]电话可以扔,但没有用try'标记... ... –