升级到cocoapods 1.0后,我在这些代码行中出现了这个编译错误:
var strName = String()
var strEmail = String()
var strFacebookID = String()
var strPassword = String()
var objHelper = Helper()
....
let strFirstName = result["first_name"] as! String
let strLastName = result["last_name"] as! String
self.strName = strFirstName + "_" + strLastName
self.strEmail = result["email"] as! String
self.strFacebookID = result["id"] as! String
来自' String的垂头丧气?!'到' String'只打开选项;你的意思是使用' !!'?
以下是详细错误的屏幕截图: http://imgur.com/Efe1nQf
更新: 这里有更多代码:https://gist.github.com/anonymous/9c91c2eb1ccf269e78a118970468d1e8
答案 0 :(得分:4)
错误消息显示result
本身是可选的,因此您必须分别打开result
和值。
let strFirstName = result!["first_name"] as! String
或更好地使用可选绑定以提高安全性和减少类型转换
if let userData = result as? [String:String] {
let strFirstName = userData["first_name"]!
let strLastName = userData["last_name"]!
}
答案 1 :(得分:1)
result["key"]
本身会返回一个可选项,因为该密钥可能不存在于字典中。
您需要先解包该可选项,然后将返回的值转换为String。试试这个:
let strFirstName = result["first_name"]! as! String
这是一种代码味道,它有很多铸造。也许该词典应该是[String : String]
类型,而不是它现在的类型。
答案 2 :(得分:0)
对我来说,只需删除as! String
即可。
所以代替
let strFirstName = result!["first_name"] as! String
替换为
let strFirstName = result!["first_name"]