我有一些应该从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在我的代码中;根据需要参考。我的代码在哪里出错,我该如何解决?
答案 0 :(得分:1)
在我从这个API获得的JSON中,history
字典不在response
字典内,而是在同一根级别。
所以你的代码应该是这样的:
let historyData = json["history"]["date"]["pretty"]