2016-02-20 47 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