升级到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
从"字符串?!"向下转换为"字符串"只会解开可选包; 你的意思是使用"!!"吗?
以下是错误的详细屏幕截图:https://i.stack.imgur.com/Z5Ssz.jpg
更新:更多代码在这里: https://gist.github.com/anonymous/9c91c2eb1ccf269e78a118970468d1e8
错误消息说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"]!
}
result["key"]
本身返回一个 optional,因为字典中可能存在该键。
您需要首先解开该可选包,然后将返回的值强制转换为字符串。试试这个:
let strFirstName = result["first_name"]! as! String
这是一种代码气味,这是很多铸造。也许那本字典应该是[String : String]
型的,而不是现在的样子。
只是删除as! String
起作用了。所以代替,
let strFirstName = result!["first_name"] as! String
替换为,
let strFirstName = result!["first_name"]