2017-10-04 83 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() 
     } 
    } 
} 
相關問題