将Alamofire请求转换为同步



如何将当前的alamofire请求转换为同步请求?这将停止所有其他执行,直到请求完成?

我的当前功能如下:

func updateLabels() {
    Alamofire.request(apiUrl).responseJSON { response in
        if let data = response.result.value {
            var rawJson = JSON(data)
            var json = rawJson[0]
            var totalViews = json["totalViews"].stringValue
            var uniqueUsers = json["uniqueUsers"].stringValue
            print(totalViews)
            print(uniqueUsers)
            self.totalViews.setText(totalViews)
            self.uniqueUsers.setText(uniqueUsers)
        }
    }
}

我正在使用Alamofire_Synchronous。我对Alamofire不太熟悉,所以任何帮助都很棒,谢谢!

您可以使用此扩展名并将Sync请求调用到Alamofire lib。

extension Alamofire.Manager {
    func syncRequest(URLRequest: URLRequestConvertible) -> Response<AnyObject, NSError> {
        var outResponse: Response<AnyObject, NSError>!
        let semaphore: dispatch_semaphore_t! = dispatch_semaphore_create(0)
        self.request(URLRequest).responseJSON { (response: Response<AnyObject, NSError>) -> Void in
            outResponse = response
            dispatch_semaphore_signal(semaphore)
        }
        dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
        return outResponse
    }
}

最新更新