在Swift中解开问题

时间:2015-12-06 17:40:35

标签: ios json swift

我在使用已解析的JSON中的值时遇到问题。每当我尝试使用字典中的值时,它表示它是可选的。它不会让我转换为int。任何帮助解开值并转换为int的帮助都将受到赞赏。对不起我的无知,我刚刚开始使用IOS和Swift。我在下面用key =" uso"显示我的问题。

if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String : String]]{

    for line in json{
    //unwrap it with if let.
        print(line)
        let uso = String(line["uso"])
        print(uso)
    }

} 
else {
    let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
    print("Error could not parse JSON: \(jsonStr)")

}

这是我的输出:

["capacidad": "15", "uso": "5", "unidad": "sanfrancisco", "telefono": "num"]

Optional("5")

["capacidad": "15", "uso": "5", "unidad": "pediatricouniversitario", "telefono": "num"]

Optional("5")

 ["capacidad": "15", "uso": "7", "unidad": "sanjorge", "telefono": "num"]

 Optional("7")

 ["capacidad": "20", "uso": "4", "unidad": "himacaguas", "telefono": "num"]

Optional("4")

["capacidad": "20", "uso": "8", "unidad": "himabayamon", "telefono": "num"]

Optional("8")

["capacidad": "10", "uso": "8", "unidad": "sanlucas", "telefono": "num"]

Optional("8")

["capacidad": "15", "uso": "11", "unidad": "auxiliomutuo", "telefono": "num"]

Optional("11")

1 个答案:

答案 0 :(得分:2)

实际上循环中的注释行很好地说明了要做什么

for line in json{
  //unwrap it with if let.
   if let uso = line["uso"], usoInt = Int(uso) {
    print(usoInt)
   }
}

由于类型[[String:String]]已知,因此不需要类型转换。

或者,如果uso始终存在且始终代表数字

for line in json{
  //unwrap it with if let.
   let uso = line["uso"]!
   print(Int(uso)!)
}