我有一个关闭功能,可以从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]]()
或如果未随声明一起提供默认值,则保持未解决状态。关于ios - 如何将闭包函数的返回值设置为变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52116760/