Swift 4从类变量访问完成Handler返回值



问题:我正在尝试访问从完成手机返回的值,以将其分配给一个不在完整的HandHandler返回方法范围之外的变量。我可以在该方法范围内访问变量,但是我不能从外部访问。访问时,我试图将其分配给类变量,但无法使用。有什么想法吗?

var marketler = [MarketModel]()
var marketAdiArray = [String]()
override func viewDidLoad() {
    getMarkets { (marketdizi) in
        self.objAryToTableView(markets: marketdizi)
        print(self.marketAdiArray) // -> this returns the right array
    }
    print(self.marketAdiArray) // -> this returns an empty array
 }
func getMarkets(completionHandler : @escaping ([MarketModel])->()) {
    let uid = "userID(02)"
    print("uid : (uid)")
    MobileUserViewModel().getUser(userId: uid, completionHandler: { (user) in
// here returns an user object
        self.loginUser = user
        MarketViewModel().getMarketFromDb(mobilUser: user, completionHandler: { (marketler) in
            print("marketler : (marketler)")
            completionHandler(marketler)
        })
    })
}
 func objAryToTableView(markets : [MarketModel]) {
    var ary = [String]()
    for m in markets {
        ary.append(m.marketName as String!)
    }
    self.marketAdiArray = ary
}

getMarketFromDb呼叫成功之后,块内部的代码(完成处理程序(将被执行。块外的代码是在上一行之后执行的,该行没有数组上的任何数据。

如果您需要触发UI更新,从数据DB更新数据,则需要从完成块内部调用UI更新。

getMarkets { (marketdizi) in
         self.objAryToTableView(markets: marketdizi)
         print(self.marketAdiArray) // -> this returns the right array
         self.tableView.reloadData()
    }
    print(self.marketAdiArray) // -> this returns an empty array

相关内容

  • 没有找到相关文章

最新更新