Alamofire响应代表永远不会运行

时间:2015-06-18 18:19:54

标签: swift alamofire

我刚刚开始玩Swift,所以我为我的语言中有关我的问题的任何不准确而道歉。我看了过去几天,但没有见过有这个具体问题的人,所以我假设我做的事情显然是错的。

这是一款非常基本的Mac控制台应用程序。 Xcode版本6.3.2,我相信Swift 1.2。

发出请求,我可以看到调用进度委托和打印结果。但是,响应委托从未被调用,尽管请求已完成。谁能告诉我我做错了什么?

这是我的代码:

var waiting = true;

let req = request(.GET, "http://www.stackoverflow.com/")
.progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) -> Void in
    println("Entering progress")
    println("\(totalBytesRead) of \(totalBytesExpectedToRead)")
}
.response { (request, response, data, error) -> Void in
    println("Received response")
    waiting = false;
}

debugPrintln(req)

while(waiting)
{}

编辑:我将Alamofire代码直接添加到我的项目中而不是引用框架,这就是为什么我可以在没有request

的情况下调用Alamofire.request(...

2 个答案:

答案 0 :(得分:0)

while(waiting)

正在阻止主线程。 删除它,或改为使用dispatch_semaphore。

答案 1 :(得分:0)

你不能占据或阻止主要线索"等待,因为Alamofire使用相同的队列。它永远不会运行 - 一个僵局!

这有效:

repeat {
    RunLoop.current.run(until: Date(timeIntervalSinceNow: 0.1))
} while waiting