【发布时间】:2016-12-08 10:43:12
【问题描述】:
我有一个 Alamofire 调用,我在其中获取项目列表,然后解析它们:
class func getList(_ completion:@escaping (Array<Item>) -> Void) {
Alamofire.request("http://foo.com", method: .get, parameters: nil, headers: nil)
.responseJSON { response in
let list = parseList(response as! NSArray)
completion(list)
}
}
当我解析列表时,我需要再次调用以获取项目的状态:
class func parseList(_ responseArray: NSArray) -> Array<Item> {
let list = NSMutableArray()
for itemDic in responseArray {
let item = Item()
item.id = itemDic.value(forKey: "Id") as? Int
item.name = itemDic.value(forKey: "Name") as? Int
Alamofire.request("http://bar.com", method: .get, parameters: nil, headers: nil)
.responseJSON { response in
item.status = response as? String
}
list.add(item)
}
return list as NSArray as! Array<Item>
}
主要问题是我需要在第一个函数中完成之前获得所有项目状态,现在当循环已经返回数组时我会得到一些状态响应。返回带有状态的解析列表的最佳解决方案是什么?
【问题讨论】:
-
使用 dispatch group 和 dispatch_group_wait 调用
completjon(list)
标签: ios swift3 closures alamofire