SWIFT: "NSURLDomain Error -1005" 解析时 JSON
SWIFT: "NSURLDomain Error -1005" when parsing JSON
我的函数 getWeatherInfo()
从天气 Web 服务检索数据,解析 json,并将某些信息排序到我的数组 info
中。设置好我的功能后,我 运行 程序出现了这个错误:操作无法完成。 (NSURLErrorDomain 错误 -1005。)
致命错误:在展开 Optional 值时意外发现 nil。当我声明我的变量 jsonResult
时它告诉我这个错误
这是代码:
var info = [AppModel]()
func getWeatherInfo(completion: (results : NSArray?) ->Void){
let urlPath = "http://api.openweathermap.org/data/2.5/weather?zip=92606,us&units=imperial"
let url: NSURL = NSURL(string: urlPath)!
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
if error != nil {
// If there is an error in the web request, print it to the console
println(error.localizedDescription)
}
var err: NSError?
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary // here is where I recieve my error
if err != nil {
// If there is an error parsing JSON, print it to the console
println("JSON Error \(err!.localizedDescription)")
}
let json = JSON(jsonResult)
var temp = json["main"]["temp"].stringValue
var humidity = json["main"]["humidity"].stringValue
var pressure = json["main"]["pressure"].stringValue
var information = AppModel(temperature: temp, pressure: pressure, humidity: humidity)
println(information)
self.info.append(information)
completion(results: self.info)
})
task.resume()
}
override func viewDidLoad() {
super.viewDidLoad()
getWeatherInfo{ (info) in
println(info)
}
}
过去一直运行良好,我成功地从 Web 服务取回数据并将信息分类到我的数组中。有人可以指出我如何解决这个问题的正确方向吗?
偶尔出现网络问题是正常的。稍等片刻,然后重试。您的代码中的错误在这里:
if error != nil {
println(error.localizedDescription)
}
应该是:
if error != nil {
println(error.localizedDescription)
return
}
如果有错误你必须停止,否则你也会崩溃。
我的函数 getWeatherInfo()
从天气 Web 服务检索数据,解析 json,并将某些信息排序到我的数组 info
中。设置好我的功能后,我 运行 程序出现了这个错误:操作无法完成。 (NSURLErrorDomain 错误 -1005。)
致命错误:在展开 Optional 值时意外发现 nil。当我声明我的变量 jsonResult
时它告诉我这个错误
这是代码:
var info = [AppModel]()
func getWeatherInfo(completion: (results : NSArray?) ->Void){
let urlPath = "http://api.openweathermap.org/data/2.5/weather?zip=92606,us&units=imperial"
let url: NSURL = NSURL(string: urlPath)!
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
if error != nil {
// If there is an error in the web request, print it to the console
println(error.localizedDescription)
}
var err: NSError?
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary // here is where I recieve my error
if err != nil {
// If there is an error parsing JSON, print it to the console
println("JSON Error \(err!.localizedDescription)")
}
let json = JSON(jsonResult)
var temp = json["main"]["temp"].stringValue
var humidity = json["main"]["humidity"].stringValue
var pressure = json["main"]["pressure"].stringValue
var information = AppModel(temperature: temp, pressure: pressure, humidity: humidity)
println(information)
self.info.append(information)
completion(results: self.info)
})
task.resume()
}
override func viewDidLoad() {
super.viewDidLoad()
getWeatherInfo{ (info) in
println(info)
}
}
过去一直运行良好,我成功地从 Web 服务取回数据并将信息分类到我的数组中。有人可以指出我如何解决这个问题的正确方向吗?
偶尔出现网络问题是正常的。稍等片刻,然后重试。您的代码中的错误在这里:
if error != nil {
println(error.localizedDescription)
}
应该是:
if error != nil {
println(error.localizedDescription)
return
}
如果有错误你必须停止,否则你也会崩溃。