无法快速更改ui标签

问题描述 投票:-2回答:2

我正在尝试制作天气应用。我遇到的问题是在解析出数据之后,我尝试将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'。使捕获语义明确。

但是,每次我尝试自我。在前面,它不会打印我的数据,并且会发生其他情况。任何帮助将不胜感激,因为我是新来的

ios swift xcode parsing uilabel
2个回答
0
投票

在具有UILabel的控制器中创建一个可选变量:

var descriptionText: String?

现在解析数据时,将值分配给此变量

if let description = value["description"] as? String{
                    descriptionText = description
}

解析数据后,将此值分配给标签

self.conditionlabel.text = descriptionText

0
投票

[我认为您需要在此处使用self.conditionlabel.text = description(也就是说,self的使用是UILabel而不是description的使用-我的猜测是您正在使用self.description,这给了您视图控制器的描述。)

编辑:要克服线程问题,请像下面这样包装代码:

DispatchQueue.main.async { [weak self] in
    self?.conditionlabel.text = description
}
© www.soinside.com 2019 - 2024. All rights reserved.