2016-06-08 28 views
0

我正在搜索以保存臨時標記存儲在我的django-rest框架中以執行一些GET/POST請求。這是我的代碼:alamofire返回標記字符串

class API { 

    let apiBaseUrl = "https://myhost.tld" 

    func getToken(loginData: NSDictionary ,completionHandler: (NSDictionary?, NSError?) ->()) { 
     makePOST(loginData, section: "api-token-auth", completionHandler: completionHandler) 
    } 

    func getList(tokenStr: String, completionHandler: (NSDictionary?, NSError?) ->()) { 
     makeGET(tokenStr, section: "api/list", completionHandler: completionHandler) 
    } 

    func makePOST(login: NSDictionary, section: String, completionHandler: (NSDictionary?, NSError?) ->()) { 

     Alamofire.request(.POST, "\(apiBaseUrl)/\(section)/", parameters: login as! [String : String]) 
      .responseJSON { response in 
       switch response.result { 
       case .Success(let value): 
        completionHandler(value as? NSDictionary, nil) 
       case .Failure(let error): 
        completionHandler(nil, error) 
       } 
     } 
    } 

    func makeGET(token: String?=nil, section: String, completionHandler: (NSDictionary?, NSError?) ->()) { 

     Alamofire.request(.POST, "\(apiBaseUrl)/\(section)/", headers: ["Authorization":"Token \(token)"]) 
      .responseJSON { response in 
       switch response.result { 
       case .Success(let value): 
        completionHandler(value as? NSDictionary, nil) 
       case .Failure(let error): 
        completionHandler(nil, error) 
       } 
     } 
    } 
} 

因此,當我創建一個對象類型的API(),我可以視圖返回我的令牌當我打電話爲gettoken但我不知道如何來存儲這些將它傳遞給api.getList(令牌)功能:

let api = API() 
api.getToken(["username":"blah","password":"blah"]) { responseObject, error in 
     debugPrint("responseObject = \(responseObject!["token"])") 
     return 
}... 

謝謝!

+0

你需要在本地存儲令牌在您的設備? – MXV

+0

@Daniel您可以將您的令牌存儲在完成處理程序中的變量中 – Jared

+0

我可以存儲在鑰匙串中,但其作爲變量可以更好地傳遞到下一個函數。我如何可以在完成處理程序中放置新變量並全局存儲? –

回答

0

試試下面的代碼:

let api = API() 
    api.getToken(["username":"blah","password":"blah"], { responseObject, error in 
      print("responseObject = \(responseObject!["token"])") 
      api.getList(responseObject!["token"], { responseObject, error in 
     } 
    ) 
    }) 
+0

你的答案有用,但我必須繼承更多的功能。 –

+0

你可以投票並將答案標記爲有用:) –