Запрос API SwiftyJSON возвращает значение null

У меня есть несколько функций, которые должны брать данные из Wunderground API и возвращать из них значение. Мой класс ниже:

import UIKit
import Foundation
typealias ServiceResponse = (JSON, NSError?) -> Void

class APITest: NSObject {
static let sharedInstance = APITest()

let baseURL = "http://api.wunderground.com/api/91e65f0fbb35f122/history_20150811/q/OR/Portland.json"

func getRandomUser(onCompletion: (JSON) -> Void) {
    let route = baseURL
    makeHTTPGetRequest(route, onCompletion: { json, err in
        onCompletion(json as JSON)
    })
}

func makeHTTPGetRequest(path: String, onCompletion: ServiceResponse) {
    let request = NSMutableURLRequest(URL: NSURL(string: path)!)

    let session = NSURLSession.sharedSession()

    let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
        let json:JSON = JSON(data: data)
        onCompletion(json, error)
    })
    task.resume()
}

func addData() {
    APITest.sharedInstance.getRandomUser { json in
        let historyData = json["response"]["history"]["date"]["pretty"]
        dispatch_async(dispatch_get_main_queue(),{
            println("Value:\(historyData)")
        })
    }
}

Однако каждый раз, когда я запускаю код, он возвращает нулевое значение. API находится в моем коде; обращайтесь к нему по мере необходимости. Где мой код пошёл не так и как я могу это исправить?


person ButtonMasterBot    schedule 12.08.2015    source источник
comment
Попробуйте printl() ваши данные JSON в dataTask и посмотрите, существуют ли они.   -  person Brandon A    schedule 13.08.2015


Ответы (1)


В JSON, который я получаю от этого API, словарь history находится не внутри словаря response, а на том же корневом уровне.

Итак, ваш код должен быть таким:

let historyData = json["history"]["date"]["pretty"]
person Eric Aya    schedule 12.08.2015