Ответ 1
Принятый ответ отлично работает, но с введением Alamofire 3.0.0 есть некоторые нарушения, которые влияют на эту реализацию.
руководство по миграции содержит дополнительные пояснения, но я расскажу о тех, которые связаны с фактическим решением.
-
Response
Все сериализаторы ответов (за исключением ответа) возвращают общую структуру Response. -
Тип ответа
Тип результата был изменен как двойной общий тип, который не хранит NSData? в случае.Failure
.
Также учтите, что Alamofire рассматривает любой завершенный запрос, чтобы быть успешным, независимо от содержания ответа. Поэтому вам нужно связать .validate()
до .responseJSON()
, чтобы попасть в случай .Failure
.
Подробнее об этом .
Обновленный код:
let url = "http://api.myawesomeapp.com"
Alamofire.request(.GET, url).validate().responseJSON { response in
switch response.result {
case .Success(let data):
let json = JSON(data)
let name = json["name"].stringValue
print(name)
case .Failure(let error):
print("Request failed with error: \(error)")
}
}
Для справки:
- Xcode 7.3 (Swift 2.2)
- Alamofire 3.3.1
- SwiftyJSON 2.3.3