在Alamofire函数调用中更改属性值

时间:2018-12-18 08:41:16

标签: swift alamofire

我最近开始参加Alamofire。我想使用Alamofire发送一个简单的GET请求:

import Alamofire

class Test{
    var url:String = "www.github.com"
    var i: Int = 1

    func change(){
        Alamofire.request(url, method:.get).responseString { response in
            self.i += 1
            print(self.i)
        }
        print(i)
    }
}

我想在Alamofire函数调用中将Test类的属性i从1更改为2。并在控制台上打印结果以查看会发生什么。我希望输出为

  

2 2

但实际输出是

  

1 2

!我对这个结果感到很困惑。为什么不是2 22 1而是1 2?函数调用期间真正发生了什么?为什么不能更改属性?

1 个答案:

答案 0 :(得分:0)

由于Alamofire请求是异步的,因此print(i)函数在print(self.i)之前运行。您可以通过使用DispatchGroup()等待Alamofire的结果来实现所需的目标。但是,我不建议这样做。

您可以获得有关在Alamofire上使用Dispatch的更多信息:

iOS - swift 3 - DispatchGroup

为什么这是一个不好的方法,@ Rob在下面的帖子中回答得很清楚:

Synchronous Alamofire Request with DispatchGroup