无法在 swift 中更改 UI 标签



我正在尝试制作一个天气应用程序。 我遇到的问题是在解析出数据后,我尝试更改 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

但是我收到此错误 在闭包中引用属性"条件"需要明确的"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
}

最新更新