我正在寻找一个可以链接多个HTTP请求的好模式.我想使用Swift,最好是Alamofire.
比如说,我想做以下事情:
承诺的概念似乎很适合这一点.如果我可以做这样的事情,PromiseKit可能是个不错的选择:
NSURLConnection.promise(
Alamofire.request(
Router.Put(url: "http://httbin.org/put")
)
).then { (request, response, data, error) in
Alamofire.request(
Router.Get(url: "http://httbin.org/get")
)
}.then { (request, response, data, error) in
// Process data
}.then { () -> () in
// Reload table
}
Run Code Online (Sandbox Code Playgroud)
但那是不可能的,或者至少我不知道.
如何在不嵌套多个方法的情况下实现此功能?
我是iOS的新手,所以也许有一些我缺少的基础知识.我在其他框架(如Android)中所做的是在后台进程中执行这些操作并使请求同步.但Alamofire本质上是异步的,所以这种模式不是一种选择.
我正在使用Alamofire进行POST请求.由于此POST请求可能需要一段时间,我想跟踪进度并将其显示为ProgressView.
Alamofire.request(.POST, ApiLink.create_post, parameters: parameters, encoding: .JSON)
.progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) -> Void in
println("ENTER .PROGRESSS")
println("\(totalBytesRead) of \(totalBytesExpectedToRead)")
self.progressView.setProgress(Float(totalBytesRead) / Float(totalBytesExpectedToRead), animated: true)
}
.responseJSON { (_, _, mydata, _) in
println(mydata)
}
Run Code Online (Sandbox Code Playgroud)
但是,我注意到.progress块只在post请求结束后才被调用,而不是多次调用以实际跟踪进度. println("ENTER .PROGRESSS")只被调用一次(最后)
我如何使.progress与Alamofire.request POST一起使用?
另外:我的参数包括base64编码的图像字符串.我正在使用后端Ruby on Rails来处理图像.这个过程需要相当长的时间.