从天气api获取图像时出错。 iOS版

时间:2017-01-29 20:01:42

标签: ios json swift weather-api

这是来自调试。

url String  "https://openweathermap.org/img/w/Optional(\50n\).png"  

问题出在这一行:

 self.imgURL = "https://openweathermap.org/img/w/\(self.dodatek).png"

当我将(self.dodatek)更改为例如图标50n时,它会工作并向我显示图标。 当我启动我的天气应用程序并写下我希望有这样的城市名称,但对于50n,它必须是我从json获取的变量。

https://openweathermap.org/img/w/50n.png

1 个答案:

答案 0 :(得分:0)

对于您的问题,快速而肮脏的修补程序似乎正在展开可选的dodatek(可能是String?),如下所示

 self.imgURL = "https://openweathermap.org/img/w/\(self.dodatek!).png"

清洁解决方案绝对是

guard let dodatek = self.dodatek else {
    // handle that dodatek is nil
    // or just return
    return
}
 self.imgURL = "https://openweathermap.org/img/w/\(dodatek).png"

解释

问题在于,当您将属性dodatek声明为nil时,理论上String?可以nil 如果您确定它永远不会是var dodatek: String // not String? ,请将其声明为

guard let

代替。 如果它可以是nil,则应使用上面的<SomeControl MouseDown="MyMouseHandler"> ... </SomeControl> 语句来定义应该使用的URL的回退值(如可能是通用天气图标的URL)