将 Alamofire 请求转换为同步?

Posted

技术标签:

【中文标题】将 Alamofire 请求转换为同步?【英文标题】:Convert Alamofire request to synchronous? 【发布时间】:2017-06-05 03:32:16 【问题描述】:

如何将我当前的 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 不是很熟悉,所以任何帮助都会很棒,谢谢!

【问题讨论】:

我想,这个链接会帮助你***.com/questions/39961010/… 【参考方案1】:

您可以使用此扩展程序并向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
    

【讨论】:

您好,希望您一切顺利。我可以问一个与同步有关的问题吗?

以上是关于将 Alamofire 请求转换为同步?的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 和 api 密钥有问题

将 Alamofire 请求转换为 URLSession 请求

在 swift 3 中下载文件时,alamo fire 中的进度视图不会更新

Alamofire 2 不允许 SSL 连接 Instagram API

我有一个将一些数据发布到服务器的 url。如何使用 URL 中提到的所有参数将其转换为 alamofire 发布请求方法

将数据保存在特定用户 ID iOS - Alamofire, Json