我刚开始学习swift编程,目前能够从JSON中获取单个值,但无法通过循环遍历数组来获取所有的值。所以我的问题是如何获取所有值并将其视为浮点数或字符串。
这是我的代码:
let url = URL(string: "http://api.fixer.io/latest")
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil
{
print ("ERROR")
}
else
{
if let content = data
{
do
{
//Array
let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
//print(myJson)
for items in myJson [AnyObject] {
print(items)
}
//here is the single value part, it looks for the rates then it puts it in label.
if let rates = myJson["rates"] as? NSDictionary{
if let currency = rates["AUD"]{
print(currency);
self.label.text=String(describing: currency)
}
}
}
catch
{
}
}
}
}
task.resume()
for items in myJson [AnyObject]
我不认为它能编译通过。@aircraft的答案在定义myJSON常量的那一行将JSON结果转换为正确的类型。除了使用as!
强制转换之外,这是更好的方法。(我会将其重写为一个guard语句,如果转换失败就退出,因为远程服务器数据的格式可能会改变。) - Duncan CmutableContainers
在 Swift 中完全没有意义。 - vadian