【发布时间】:2018-10-19 16:20:13
【问题描述】:
我正在尝试使用 swift 从 json 文件中加载和解析国家名称,但我不能
这是我尝试读取的文件格式:Countries JSON File
我执行此任务的代码:
func getJsonFromUrl(){
let url = NSURL(string: COUNTRIES_URL)
URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {(data, response, error) -> Void in
if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary {
if let countries_array = jsonObj!.value(forKey: "name") as? NSArray {
for country in countries_array {
if let countryDict = country as? NSDictionary {
if let name = countryDict.value(forKey: "name") {
self.countries_names.append((name as? String)!)
}
}
}
}
OperationQueue.main.addOperation ({
self.showNames()
})
}
}).resume()
}
但是当我运行它时,它在这一行给我一个错误: if let countries_array = jsonObj!.value(forKey: "name") as? NSArray {
因为意外的 nil。
【问题讨论】:
-
你的
if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary {应该是as? Array<[String: Any]>,因为最上面的对象实际上是一个数组