我收到此错误消息:"条件绑定的初始化程序必须具有可选类型,而不是'NSManagedObjectContext".
我不知道如何解决这个错误.我认为错误在于"if let".
if let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext {
restaurant = NSEntityDescription.insertNewObjectForEntityForName("Restaurant",
inManagedObjectContext: managedObjectContext) as! Restaurant
restaurant.name = nameTextField.text
restaurant.type = typeTextField.text
restaurant.location = locationTextField.text
restaurant.image = UIImagePNGRepresentation(imageView.image!)
restaurant.isVisited = isVisited
//restaurant.isVisited = NSNumber.convertFromBooleanLiteral(isVisited)
var e: NSError?
if managedObjectContext.save() != true {
print("insert error: \(e!.localizedDescription)")
return
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想强制downcast(as!),那么你不需要使用可选的binding(if let),因为你的app代理将被强制解包.如果managedObjectContext是非可选的,则无法解包,这就是编译器所说的.但是如果你想在可选的binding(if let)中安全地解包它,你可以使用条件downcast(as?)和可选的链接(?.)来实现:
if let managedObjectContext = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext {
// Do something with managedObjectContext...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3283 次 |
| 最近记录: |