我已成功阅读以下网站的数据:http://free.currencyconverterapi.com/api/v3/countries。我可以在调试窗口中看到这些值。但是,我无法迭代这些项目。有超过200个项目,我想迭代它们并打印出它们的值(名称,货币名称,ID等)。
读取数据的代码:
func countryList() {
// Do any additional setup after loading the view.
let jsonUrl = "http://free.currencyconverterapi.com/api/v3/countries"
let session = NSURLSession.sharedSession()
let shotsUrl = NSURL(string: jsonUrl)
let task = session.dataTaskWithURL(shotsUrl!) {
(data, response, error) -> Void in
do {
let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary
//let results: [String:[String:[String]]] = jsonData["results"]! as! [String : [String : [String]]]
let results = jsonData["results"]!
// iterate all items and print values
// how ???
} catch _ {
// Error
}
}
task.resume()
}
我尝试了以下内容:let results : [String:[String:[String]]] = jsonData["results"]!
但是这不起作用,如果确实如此,我会感到惊讶:)。
任何指针?
使用Xcode 7.1和Swift 2
使用JSON(示例)返回的结果数据:
Country & Currency List{
"results":{
"GQ":{
"currencyId":"GQE",
"currencyName":"Central African CFA franc",
"name":"Equatorial Guinea",
"alpha3":"GNQ",
"id":"GQ"
},
"TD":{
"currencyId":"XAF",
"currencyName":"Central African CFA franc",
"name":"Chad",
"alpha3":"TCD",
"id":"TD"
}
.
.
.
答案 0 :(得分:0)
key results
的值是一个字典,可以使用简单的for .. in
循环进行枚举。
countrycode
是关键,info
是值。
将字典向下转换为[String:AnyObject]
包括所有形式的嵌套对象。
此代码打印出国家/地区代码和每个项目的名称
do {
let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers ) as! [String:AnyObject]
let results = jsonData["results"] as! [String:AnyObject]
for (countryCode, info) in results {
print(countryCode, info["name"] as! String)
}
}
请注意,没有顺序,因为字典按定义无序排序