gpt4 book ai didi

json - 为什么守卫不保护我免受 nil

转载 作者:行者123 更新时间:2023-11-28 16:09:01 24 4
gpt4 key购买 nike

我使用 weatherAPI 进行某种 JSON 解析。为了防止我遇到 nullPointer(可能页面离线或其他原因),我将我的解析覆盖到一个守卫中,因为我认为他保护我解包可选值。

guard
let loadedWeather = (json["weather"] as! [[String:AnyObject]])[0]["description"] as? String,
let loadedTemperatur = (json["main"] as! [String:AnyObject])["temp"] as? Float,
let loadedWindSpeed = (json["wind"] as! [String:AnyObject])["speed"] as? Float
else {
print("Weather JSON-Parsing failed")
return
}

我是不是误解了守卫的功能?如果是这样,我该如何解决该问题?实际上该页面处于脱机状态,并返回带有其他标签的错误 JSON 页面,例如“天气”、“主要”...等。不包括。我希望在那种情况下,我的 guard 会把我带到我的 else 语句中,这样我就可以处理这种情况。

非常感谢。

最佳答案

你误用了 guard 的语法 - 按如下方式使用它:

guard let weatherArray = json["weather"] as? [[String:AnyObject]], let mainDict = json["main"] as? [String:AnyObject], let windDict = json["wind"] as? [String:AnyObject] else {
return
}
guard let dict = weatherArray.first else {
return
}
guard let description = dict["description"] as? String, let temp = mainDict["temp"] as? Float, let speed = windDict["speed"] as? Float else {
return
}

尽管我建议您遵循 Damien 概述的 if let 语法。

关于json - 为什么守卫不保护我免受 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com