Swift 2 可选的字符串保护

Kwn*_*ios 0 swift2 guard-statement

我正在处理 swift 2.0 中的一个问题

我从 API 获取一个 json 文件,并尝试从中解开一些字符串。

有时这个 json 会给我一个带有场地街道名称的字符串,但有时不会。所以当我尝试这个时

var street = arrRes[indexPath.row]["venueLocation"]!["street"] as! String 
Run Code Online (Sandbox Code Playgroud)

它总是让我的应用程序崩溃,说它为零。当我评论它时,我的应用程序运行完美,但它不显示街道。知道如何在没有任何问题的情况下解开字符串nil吗?

如果尝试过这段代码

var street = arrRes[indexPath.row]["venueLocation"]!["street"] as! String 

if street == "" {
   street = "n/a"
}
Run Code Online (Sandbox Code Playgroud)

但它也失败了。

Dan*_*all 5

任何时候你强行打开包装!都会面临崩溃的风险,其中值为零。相反,您可以尝试像这样展开:

guard let venueDictionary = arrRes[indexPath.row]["venueLocation"] as? [String:AnyObject], let street = venueDictionary["street"] as? String else {
   //You don't have a street string, fail gracefully 
}
print(street)//Now you can use street safely as a string here
Run Code Online (Sandbox Code Playgroud)