【问题标题】:How to get result from closure function如何从闭包函数中获取结果
【发布时间】:2018-02-16 18:51:18
【问题描述】:

citylist 只有在这个闭包中才有值,在闭包之外的值是 nil,为什么?即使在这个函数完成后,citylist 的值也是 nil.. Help Please.. 如何从关闭中得到这个结果


func setData(){
    let conn = ApiConnection()
    conn.get_cities{ result in
        self.cityList = result!
    }
    print(self.cityList)
}

【问题讨论】:

  • get_cities 异步工作(闭包稍后执行)。在闭包中移动print
  • 是的我知道..即使在这个函数结束之后...... cityList 值为零..这是问题
  • 请学习理解异步数据处理的模式。如果你需要 return 一些东西,你必须添加一个异步完成处理程序。

标签: ios function swift3 closures swift4


【解决方案1】:

你的代码应该是这样的

 func setData(){
    let conn = ApiConnection()
    conn.get_cities{ result in
        self.cityList = result!
        print(self.cityList)
     }
  }

由于conn.get_citie 在与主线程不同的后台线程中运行,因此流程转到尚未有值的打印行,因此打印 nil / empty --- 但是当 print 方法在函数完成时打印API调用返回的实际数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多