我有一个关闭功能,可以从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/

10-12 05:41