JSON下载数据时出错,如Swift中的NSDictionary

时间:2014-11-30 00:44:51

标签: json swift nsdictionary

@IBOutlet weak var weather: UILabel!
@IBOutlet weak var city: UITextField!
@IBAction func button(sender: AnyObject) {
    let urlpath = "api.worldweatheronline.com/free/v2/weather.ashx?q=\(city.text)&format=json&num_of_days=5&key=c7fc4c9444ae2ddcee02a0893d5f0"
    let url = NSURL(string: urlpath)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithURL(url, completionHandler: { (data, response, error) -> Void in
        if (error != nil) {
            self.weather.text="error"


        }else{

            var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
            println(jsonResult)

        }


    })
    task.resume()





}

运行应用程序时,我在控制台中收到错误。我正确地序列化我相信的数据但是,我无法将JSON序列化数据显示在NSDictionary中。我试图将字典打印到控制台,它仍然只是显示为错误。请帮我理解这里的错误。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情。

   func fetchWeatherData(latLong: String, completion: WeatherDataCompletionBlock) {

    let baseUrl = NSURL(string: "http://api.worldweatheronline.com/free/v2/weather.ashx?q=\(city.text)&format=json&num_of_days=5&key=c7fc4c9444ae2ddcee02a0893d5f0")
    let request = NSURLRequest(URL: baseUrl!)
    println(request)
    let task = session.dataTaskWithRequest(request) {[unowned self] data, response, error in
        if error == nil {
            var jsonError: NSError?
            if (jsonError == nil) {
                let weatherDictionary = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.AllowFragments, error: &jsonError) as NSDictionary

                let data = WeatherData(weatherDictionary: weatherDictionary)
                completion(data: data, error: nil)
            } else {
                completion(data: nil, error: jsonError)
            }
        } else {
            completion(data: nil, error: error)
        }
    }

    task.resume()
}