这是我的代码。
PFUser.logInWithUsernameInBackground(email, password: password) { (user: PFUser!, error: NSError!) -> Void in
if user != nil {
PushNotication.parsePushUserAssign()
ProgressHUD.showSuccess("Welcome back, \(user[PF_USER_FULLNAME])!")
self.dismissViewControllerAnimated(true, completion: nil)
} else {
if let info = error.userInfo {
ProgressHUD.showError(info["error"] as! String)
}
}
}
这会导致错误,例如“条件绑定的初始化程序必须具有可选类型,而不是'[NSObject:AnyObject]'” 有谁知道解决方案?
答案 0 :(得分:4)
error.userInfo
不是可选的,它是[NSObject : AnyObject]
类型,正如编译器所暗示的那样。无需使用if let
打开它,它永远不会是nil
。
您可以替换
if let info = error.userInfo {
ProgressHUD.showError(info["error"] as! String)
}
与
ProgressHUD.showError(error.userInfo["error"] as! String)
如果您确定,则该值将为String。
否则,应该安全地解包字典值并将其作为字符串向下转换。例如:
if let errorString = error.userInfo["error"] as? String {
ProgressHUD.showError(errorString)
}
答案 1 :(得分:-2)
请将代码更新为:
ProgressHUD.showError(error.userInfo["error"] as! String)
然后它会起作用。