2017-10-04 60 views
0

这里是一个新的Swift人。我试图找出如何将多个Alamofire呼叫链接在一起。Alamofire请求链接 - 不能调用非函数类型的值'HTTPURLResponse'

我需要

  1. 得到服务器的身份验证令牌1
  2. 从服务器获取1(需要身份验证令牌)
  3. 从服务器得到一个身份验证令牌的一些数据2
  4. 获取更多来自服务器2的数据基于来自步骤2的值。

我试过了下面这个帖子的例子: Chain multiple Alamofire requests

遗憾的是没有这些例子与斯威夫特工作4

我已经决定继续选项2,但要得到一个

非功能型“ HTTPURLResponse?”的

不能调用值

错误都在putRequestgetRequest行上。我不知道这意味着什么或如何解决它。

我当前的代码:

import UIKit 
import PromiseKit 
import Alamofire 
import SwiftyJSON 


class ViewController: UIViewController { 


let URL = "http://httpbin.org/" 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func runPutRequest() { 
    let putRequest = Alamofire.request("\(URL)/get") 
    putRequest.response { [weak self] putRequest, putResponse, putData, putError in 
     if let strongSelf = self { 
      // Probably store some data 
      strongSelf.runGetRequest() 
     } 
    } 
} 

func runGetRequest() { 
    let getRequest = Alamofire.request("\(URL)/get", method: .get) 
    getRequest.response { [weak self] getRequest, getResponse, getData, getError in 
     if let strongSelf = self { 
      // Probably store more data 
      strongSelf.processResponse() 
     } 
    } 
} 

func processResponse() { 
    // Process that data 
} 

func reloadData() { 
    // Reload that data 
} 
} 

任何帮助将不胜感激。

回答

1

你有太多返回参数response关闭,你实际上只需要一个DataResponse参数。此代码适用于我:

func runPutRequest() { 
    let putRequest = Alamofire.request("\(URL)/get", method: .put) 
    putRequest.response { [weak self] response in 
     if let strongSelf = self { 
      // Probably store some data 
      strongSelf.runGetRequest() 
     } 
    } 
} 

func runGetRequest() { 
    let getRequest = Alamofire.request("\(URL)/get", method: .get) 
    getRequest.response { [weak self] response in 
     if let strongSelf = self { 
      // Probably store more data 
      strongSelf.processResponse() 
     } 
    } 
} 
相关问题