2016-02-20 67 views
3

我的目標是創建一個簡單的函數,我傳入一個url並返回JSON。我環顧四周,發現了Alamofire實現完成處理程序的小例子。Swift 2.0 Alamofire完成處理程序返回Json

我也在使用Swifty Json來解析它。

如何將我在這裏的功能轉換爲返回我的Json的功能。

func request() { 
    Alamofire.request(.GET, API_END_POINT) 
    .responseJSON { 
     response in 

     // swiftyJsonVar is what I would like this function to return. 
     let swiftyJsonVar = JSON(response.result.value!) 
    } 
} 
+0

什麼是你的問題? – Breek

+0

我編輯了我的描述:如何將我在這裏的內容轉換爲返回我的Json的函數。 – gradedcatfood

回答

9

斯威夫特3+Alamofire 4+

// Call function 
    myFunction("bodrum") { response in 
     print(response["yourParameter"].stringValue) 
    } 

    // POST 
    func myFunction(_ cityName:String, completion: @escaping (JSON) ->()) { 

     let token = "token" 
     let parameters = ["city" : cityName] 
     let headers = ["Authorization": "token"] 
     let url = URL(string: "url")! 
     let reqUrl = URLRequest(url: url) 

     Alamofire.request(reqUrl, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers) 
     .validate() 
     .responseJSON { response in 
      switch response.result { 
      case .Success: 
      let jsonData = JSON(data: response.data!) 
      completion(jsonData) 
      case .Failure(let error): 
      MExceptionManager.handleNetworkErrors(error) 
      completion(JSON(data: NSData())) 
      } 
     } 
    } 

斯威夫特2Alamofire 3+

// POST 
func myFunction(cityName:String, completion : (JSON) ->()) { 
    Alamofire.request(.POST, "url", parameters: ["city" : cityName], encoding: ParameterEncoding.JSON, headers: ["Authorization": "token"]) 
    .validate() 
    .responseJSON { response in 
     switch response.result { 
     case .Success: 
     let jsonData = JSON(data: response.data!) 
     completion(jsonData) 
     case .Failure(let error): 
     MExceptionManager.handleNetworkErrors(error) 
     completion(JSON(data: NSData())) 
     } 
    } 
} 

// GET 
func myFunction(cityName:String, completion : (JSON) ->()) { 
    Alamofire.request(.GET, "url", parameters: ["param1" : cityName], headers: ["Authorization": "token"]) 
    .validate() 
    .responseJSON { response in 
     switch response.result { 
     case .Success: 
     let jsonData = JSON(data: response.data!) 
     completion(jsonData) 
     case .Failure(let error): 
     MExceptionManager.handleNetworkErrors(error) 
     completion(JSON(data: NSData())) 
     } 
    } 
} 

// Call function 
myFunction("bodrum") { response in 
    print(response["yourParameter"].stringValue) 
} 
+0

這看起來不錯!但你能告訴我如何正確調用它嗎?我不認爲它很簡單:var json = myFunction(「myParam」) – gradedcatfood

+0

太棒了!它就像一個魅力,只需要玩失敗處理b.c.得到一個未解決的標識符,但多數民衆贊成在沒有biggy,非常感謝你:) – gradedcatfood

+0

不客氣,祝你好運:) – fatihyildizhan