2016-02-20 4 views
3

Моя цель - создать простую функцию, в которой я передаю URL-адрес, и он возвращает мне JSON. Я осмотрелся и нашел мало примеров того, где обработчик завершения реализован с помощью Alamofire.Swift 2.0 Alamofire Completion Handler Return 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

Swift 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())) 
      } 
     } 
    } 

Swift 2 и Alamofire 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. получить неразрешенный идентификатор, но это не большой вопрос, большое спасибо :) – gradedcatfood

+0

Добро пожаловать, удачи :) – fatihyildizhan

Смежные вопросы