我刚刚开始玩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(...
答案 0 :(得分:0)
while(waiting)
正在阻止主线程。 删除它,或改为使用dispatch_semaphore。
答案 1 :(得分:0)
你不能占据或阻止主要线索"等待,因为Alamofire使用相同的队列。它永远不会运行 - 一个僵局!
这有效:
repeat {
RunLoop.current.run(until: Date(timeIntervalSinceNow: 0.1))
} while waiting