我有一个关闭函数,可以从 Web 服务器上传和返回数据。以下代码将打印我想要的值。
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)
}
它正在打印“[]”。
尝试在闭包内设置 x 变量的值:
loadData1(onCompletion: { (json) in
x = json
})
在您使用闭包初始化的方法变量 x 中,这就是您收到警告的原因。
在执行关闭之前,变量 x 具有默认值,var x = [[String: String]]()
或者如果您没有在声明时提供默认值,则保持未解析状态。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句