我正在尝试使用找到的示例读取在线 JSON 文件 here .除非我运行它,否则它看起来很简单。它在 dataTaskWithURL 调用中一直失败,并且 error.localizedDescription 是“操作无法完成。(NSURLErrorDomain -1005.)”我已经查找了错误代码,它指的是 NSURLErrorNetworkConnectionLost 但我已连接到互联网,当我尝试时在浏览器中使用相同的 url,我收到 JSON 结果。
func searchItunes() {
let urlPath = "http://itunes.apple.com/search?term=JQ+Software&media=software"
let url: NSURL = NSURL(string: urlPath)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {
data, response, error in
if(error != nil) {
println(error.localizedDescription)
}
else {
var err: NSError?
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if(err != nil) {
println("JSON Error \(err!.localizedDescription)")
}
else {
// process data here.
}
}
})
task.resume()
}
最佳答案
这应该可行,但请注意,您上面的粘贴在 else block 中有一个额外的 }),在下面有一个额外的 }。这样我就可以成功地完成上述工作。如果您的括号在您的代码中匹配,那么您的浏览器中可能正在使用某种中间代理,但不是 swift,反之亦然,这会导致发生更改。
请注意,后台线程需要一小段时间来解决,因此如果您的程序在后台线程完成下载之前终止,您将看不到任何内容。
关于json - 快速读取在线 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25898981/