作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是我的代码。
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/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!