相关疑难解决方法(0)

连锁多个Alamofire请求

我正在寻找一个可以链接多个HTTP请求的好模式.我想使用Swift,最好是Alamofire.

比如说,我想做以下事情:

  1. 提出PUT请求
  2. 发出GET请求
  3. 用数据重新加载表

承诺的概念似乎很适合这一点.如果我可以做这样的事情,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本质上是异步的,所以这种模式不是一种选择.

ios swift alamofire promisekit

46
推荐指数
4
解决办法
3万
查看次数

Alamofire POST请求有进展

我正在使用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来处理图像.这个过程需要相当长的时间.

xcode ruby-on-rails ios swift alamofire

6
推荐指数
1
解决办法
8156
查看次数

标签 统计

alamofire ×2

ios ×2

swift ×2

promisekit ×1

ruby-on-rails ×1

xcode ×1