我最近开始参加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 2
或2 1
而是1 2
?函数调用期间真正发生了什么?为什么不能更改属性?
答案 0 :(得分:0)
由于Alamofire请求是异步的,因此print(i)
函数在print(self.i)
之前运行。您可以通过使用DispatchGroup()
等待Alamofire的结果来实现所需的目标。但是,我不建议这样做。
您可以获得有关在Alamofire上使用Dispatch的更多信息:
为什么这是一个不好的方法,@ Rob在下面的帖子中回答得很清楚: