У меня есть следующий код, который извлекает данные json через API.Swift iOS NSJsonSerialization не работает молча
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
// print("Response: \(response)")
// print("DATA: \(data)")
if data != nil {
do {
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
if let jsonResults = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSArray {
print("\n\nThe return JSON looks like this: \(jsonResults)\n\n")
}
} catch {
print("\n\nProblem getting JSON back from GET API.\n\n")
}
} else {
print("API Not Available") // data was nil
}
}) // task
task.resume()
«Печать» NSString показывает, что на моих глазах выглядит как действительный JSON. Консоль показывает это как:
Optional({"id":15,"user_id":11,"breed_id":593,"gender":"Male","age_years":5,"tally":{"count":1246,"struvite":716,"calcium_oxalate":388,"urate":217,"calcium_phosphate":30,"silica":21,"compound":41},"created_at":"2016-02-04T08:26:14.719-06:00","updated_at":"2016-02-04T08:26:14.719-06:00"})
Однако, «если позволить jsonResults =» утверждение не выполнить успешно (там нет печатного jsonResults) и улов не выполняет либо - так это, кажется, как немая ошибку.
Очень похожий вызов работает с другой частью API. Единственное большое различие заключается в том, что «tally» в возврате JSON на этот вызов вложен.
Любые предложения приветствуются.
Примерами данных, которые вы вставили в свой код, является словарь, а не массив. вам нужно ввести его в тип словаря, например. '[String: Anyobject]', как предложено [dzk] (http://stackoverflow.com/a/35204049/5836843) ниже. – ishaq