gpt4 book ai didi

swift - If Let Error - 条件绑定(bind)的初始化程序必须具有可选类型,而不是 '[NSObject : AnyObject]'

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:21 24 4
gpt4 key购买 nike

这是我的代码。

    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)
}
}
}

这会导致错误,例如“条件绑定(bind)的初始化程序必须具有可选类型,而不是'[NSObject : AnyObject]'”有没有人知道解决方案?

最佳答案

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)

如果您确定该值将是一个字符串。

否则,字典值应该被安全地解包并向下转型为一个字符串。示例:

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

关于swift - If Let Error - 条件绑定(bind)的初始化程序必须具有可选类型,而不是 '[NSObject : AnyObject]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34318602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com