swift – 如果让错误 – 条件绑定的初始化程序必须具有可选类型,而不是'[NSObject:AnyObject]’

这是我的代码.

    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]’”
有谁知道解决方案?

最佳答案 error.userInfo不是Optional,它是[NSObject:AnyObject]类型,由编译器提示.如果让它不需要打开它,它永远不会是零.

你可以替换

if let info = error.userInfo {
    ProgressHUD.showError(info["error"] as! String)
}

ProgressHUD.showError(error.userInfo["error"] as! String)

如果你确定该值将是一个字符串.

否则,应该安全地解开字典值并将其作为字符串向下转换.例:

if let errorString = error.userInfo["error"] as? String {
    ProgressHUD.showError(errorString)
}
点赞