Как преобразовать ответ ‹AnyObject› в AnyObject после запроса Alamofire с JSON в Swift?

Итак, я хочу отправить запрос к определенному API, который должен возвращать файл JSON.

Я использую Alamofire для получения объекта JSON:

dataFromAPI : JSON
Alamofire.request(.GET, myURL).responseJSON { (_, _, data) -> Void in
               dataFromAPI = JSON(data)
            }

Моя проблема в том, что данные представляют собой массив AnyObject, а функции JSON нужен тип AnyObject. Как я могу превратить одно в другое или решить проблему?


person Marie Arkan    schedule 18.09.2015    source источник


Ответы (2)


Не уверен, что получил ваш вопрос, но постараюсь показать вам, как я это делаю. Поменял код под ваш случай.

Alamofire.request(.GET, myURL)
    .validate(statusCode: 200..<300)
    .validate(contentType: ["application/json"])
    .responseJSON { request, response, jsonResult in
        switch jsonResult {
        case .Success:
            if let data = jsonResult.value as? AnyObject {
                self.dataFromAPI = JSON(data)
            }
        case .Failure(_, let error):
            print(error)
        }
}

Обычно я бы не стал разворачивать AnyObject, потому что это не имеет смысла. Обычно я разворачиваюсь в [String: AnyObject], поскольку ожидаю Dictionary от моего API, а затем пытаюсь преобразовать его в свой собственный класс модели.

Поправьте меня, если я не понял вопроса. :)

person Jonauz    schedule 18.09.2015

Alamofire возвращает Result<AnyObject> объект. Вы должны проверить, является ли результат успешным или неудачным, прежде чем извлекать JSON:

Alamofire.request(.GET, myURL)
    .responseJSON { request, response, result in
        switch result {
        case .Success(let JSON):
            print("Success with JSON: \(JSON)")

        case .Failure(let data, let error):
            print("Request failed with error: \(error)")

            if let data = data {
                print("Response data: \(NSString(data: data, encoding: NSUTF8StringEncoding)!)")
            }
        }
    }
person redent84    schedule 18.09.2015