【发布时间】:2023-04-09 02:16:02
【问题描述】:
我有一个从网络服务器上传和返回数据的闭包函数。以下代码将打印我想要的值。
loadData1(onCompletion: { (json) in
print(json)
})
我的问题是我需要将打印值设置为等于要在函数外部使用的变量。我试过这个:
let x = loadData1(onCompletion: { (json) in
return json
})
但我收到警告“推断常量 'x' 具有类型 '()',这可能是意外的”并且 x 的值等于“()”。作为参考,json的类型是[[String:String]]。
编辑: 目前有这个
var x = [[String: String]]()
override func viewDidLoad() {
super.viewDidLoad()
loadData1(onCompletion: { (json) in
self.x = json
})
print(x)
}
它正在打印“[]”。
【问题讨论】:
-
print(x) 在闭包内,在 self.x = json 之后
-
你需要学习异步处理。
-
@AnastasiaKovaleva 如何在代码的不同部分访问 x?我需要在集合视图单元格中使用它。
-
那么你最好在加载 json 时显示任何占位符数据,并在回调闭包内初始化 x 后用检索到的数据重新加载集合视图单元格。
-
@AnastasiaKovaleva 我仍然不确定如何在闭包之外访问 json 数据?如果我将 x 放在 ui 集合单元格中,它是一个未解析的标识符。