Mac OS X 10.11.3 El-Capitan、XCode 7.2.1、来自 Carthage 的 Alamofire 3.5.1
试图获得我能想到的最基本的 Alamofire 示例。虽然我是一名经验丰富的开发人员,但我是 XCode 的新手,所以我确信我只是缺少一些基本的东西。我设置了一个新项目,通过 Carthage 添加了 Alamofire,在 main.swift 中添加了一个简单的获取请求。代码构建并运行,但我的响应闭包中没有任何内容被调用。我添加了 sleep 以尝试并确保等待足够长的时间来调用闭包。我打开了 Little Snitch,看到我的项目正在调用 httpbin.org。我尝试了多种 response* 方法。但是闭包永远不会运行,我错过了什么?
主.swift
import Alamofire
print("Start")
var x : String = "main"
Alamofire.request(.GET, "https://httpbin.org/get")
.responseString {resp in
print("in response handler")
print("response \(resp)")
x = "response"
}
sleep(90)
print("End \(x)")
控制台输出
Start
End main
X代码
最佳答案
我认为 Alamofire 默认情况下会调用主队列中的响应处理程序,因此如果您在主队列/线程中发出请求、 sleep 和打印,则在应用程序终止之前不会从主队列执行 responseString。不知道 .responseString,但使用 .response 可以指定队列:
public func response<T: ResponseSerializerType>(
queue queue: dispatch_queue_t? = nil,
responseSerializer: T,
completionHandler: Response<T.SerializedObject, T.ErrorObject> -> Void)
-> Self
关于xcode - Alamofire 无法执行响应关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35211138/