即使使用完备处理程序,Alamofire也会在获得响应之前返回值

时间:2019-09-18 01:17:18

标签: ios swift alamofire

我正在使用Alamofire进行GET调用以获取一些数据。我添加了完成处理程序,但是该函数在没有任何实际响应之前返回nil。我添加了完成处理程序来解决此问题,但该问题仍然存在。

尝试包括完成处理程序。

typealias completionBlock = ([String]?) -> Void

func getImageURLS(_ completion: @escaping completionBlock) -> [String] {

    var urls = [String]()
    var i : Int = 0
    Alamofire.request("//myurl").responseJSON{response in
        let data : JSON = JSON(response.result.value as Any)
        switch(response.result) {
        case .success(_):

            while (i < 50){
                urls.append(data["products"][i]["images"][0]["src"].stringValue)
                i = i + 1
            }
            completion(urls)
            break
        case .failure(_):
            print("There is an error")
            completion([])
            break
        }
    }
    return urls
}

override func viewDidLoad() {
    super.viewDidLoad()
    getImageURLS({data in
        self.URLS = data as! [String]
    })
    collectionView.delegate = self
    collectionView.dataSource = self
}

0 个答案:

没有答案