Alamofire无法获得响应关闭以执行

时间:2016-02-04 20:37:31

标签: xcode swift alamofire

Mac OS X 10.11.3 El-Capitan,XCode 7.2.1,Alamofire 3.5.1 via Carthage

试图获得我能想到的最基本的Alamofire示例。虽然经验丰富的开发人员我是XCode的新手,所以我确信我只是缺少一些基本的东西。我设置了一个新项目,通过Carthage添加了Alamofire,在main.swift中添加了一个简单的get请求。代码构建和运行,但我的响应闭包没有被调用。我添加了睡眠尝试,并确保等待足够长的时间来调用闭包。我有Little Snitch,看到我的项目正在调用httpbin.org。我尝试了各种响应*方法。但关闭从未运行,我错过了什么?

main.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

的XCode

xcode screenshot

2 个答案:

答案 0 :(得分:2)

我认为Alamofire默认调用主队列中的响应处理程序,因此如果您在主队列/线程中发出请求,睡眠和打印,则在应用程序终止之前不会从主队列执行responseString。不知道.responseString,但是.response你可以指定队列:

public func response<T: ResponseSerializerType>(
        queue queue: dispatch_queue_t? = nil,
        responseSerializer: T,
        completionHandler: Response<T.SerializedObject, T.ErrorObject> -> Void)
        -> Self

答案 1 :(得分:0)

working example

的Github回购