我正在尝试制作天气应用。我遇到的问题是在解析出数据之后,我尝试将UILabel更改为等于返回的示例数据。
if let weather = item["weather"] as? NSArray{
if let value = weather[0] as? NSDictionary{
if let description = value["description"] as? String{
print(description)
}
代替打印描述,我想像这样更改UI标签的内容
conditionlabel.text = description
但是我得到这个错误闭包中对属性'Condition'的引用需要显式的'self'。使捕获语义明确。
但是,每次我尝试自我。在前面,它不会打印我的数据,并且会发生其他情况。任何帮助将不胜感激,因为我是新来的
在具有UILabel的控制器中创建一个可选变量:
var descriptionText: String?
现在解析数据时,将值分配给此变量
if let description = value["description"] as? String{
descriptionText = description
}
解析数据后,将此值分配给标签
self.conditionlabel.text = descriptionText
[我认为您需要在此处使用self.conditionlabel.text = description
(也就是说,self
的使用是UILabel
而不是description
的使用-我的猜测是您正在使用self.description
,这给了您视图控制器的描述。)
编辑:要克服线程问题,请像下面这样包装代码:
DispatchQueue.main.async { [weak self] in
self?.conditionlabel.text = description
}