Swift 2 个可选字符串保护

Swift 2 optional guard on string

我正在处理 swift 2.0

中的一个问题

我从 API 得到了一个 json 文件,我正试图从中解开一些字符串。

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

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

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

如果试过这个代码

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

if street == "" {
   street = "n/a"
}

但也失败了。

任何时候你用 ! 强制解包你 运行 在值为 nil 的情况下崩溃的风险。相反,您可以尝试像这样展开:

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