栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我无法从Alamofire获得请求结果

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我无法从Alamofire获得请求结果

因此,异步调用是在另一个线程上执行的。因此,当您调用该函数时

populateVenue()
,该
populateVenue()
函数未在之前完成
println("The2st result array : (self.resultArray)")
。如果您设置
populateVenue()
要关闭,则不会发生这种情况。例:

override func viewDidLoad() {   super.viewDidLoad()   populateVenue( { (error, result) -> Void in       println("The 2st result array : (self.resultArray)" )   })}func populateVenue(completion: (error: NSError?, result: AnyObject?) -> Void) {    Alamofire.request(.POST, "http://localhost:8080/ws/automobile/global/auction/latest/venues").responseJSON() {    (_, _, jsonData, error) in       if error == nil {          // do whatever you need          // Note that result is whatever data you retrieved          completion(nil, result)       } else {println("Errror")completion(error!, nil)       }   }}

编辑:

我仍在尝试了解您的问题,但这是我的最佳选择。请注意,我不知道resultOld的用途是什么,因此我将其删除。如果绝对需要,可以将其重新添加。我的设计是使属性成为可选属性,并将结果返回到完成块中。然后,在viewDidLoad中,您可以初始化属性数组并重新加载屏幕。

@IBOutlet var venuePicker : UIPickerView?// Try making this optional so you can tell when the network call is completedvar result: [String]?var error = "Error"let refreshControl = UIRefreshControl()override func viewDidLoad() {    if result == nil {       populateVenues ( { (result) -> Void in          self.result = result          self.venuePicker?.reloadAllComponents()       })    }}func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {    return 1}func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {     if result != nil {        return result.count     } else {        return 0     }}func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {    return result[row]}func populateVenues(completion : (result : [String]?) -> Void){    Alamofire.request(.POST, "http://localhost:8080/ws/automobile/global/auction/latest/venues").responseJSON() {        (_, _, jsonData, error) in        if error == nil{ var venues = JSON(jsonData!) for (k, v) in venues {     resultOld[k] = v.arrayValue[0].stringValue } result = resultOld.values.array completion(result: result)        }        else{ println("Error!!") completion(result: nil)        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号