通常我只是进入字典并在里面找到值。在这种情况下,我需要介入,循环查找值然后再次退出然后找到不同的值。例如:
address_components": [
{
"long_name": "E3 2AA",
"short_name": "E3 2AA",
"types": [
"postal_code"
]
},
{
"long_name": "London",
"short_name": "London",
"types": [
"postal_town"
]
}
]
这就是googles api字典的样子,我需要获取long_name
的{{1}}。
答案 0 :(得分:2)
您可以使用传递闭包的first(where:
函数来过滤type
,这可以避免循环:
if let addressComponents = json["address_components"] as? [[String:Any]],
let postalTownComponent = addressComponents.first(where: { ($0["types"] as! [String]).contains("postal_town") }) {
print(postalTownComponent["long_name"])
}
答案 1 :(得分:2)
这应该适合你:
let result = addressComponents.filter({ return ($0["types"] as! [String]).contains("postal_town") }).map({ $0["long_name"] })
答案 2 :(得分:0)
address_components
是一个数组,因此您可以循环遍历它并检查密钥的值。也许是这样的:
var names = []
for entry in addressComponent {
if addressComponent["types"][0] == "postal_town" {
names.append(addressComponent["long_name"])
}
}
答案 3 :(得分:0)
它应该那么简单,还是我误解了你的问题?一个例子:
let dict = [ "long_name": "E3 2AA", "short_name": "E3 2AA"]
for (key, value) in dict {
print("your key: \(key) and value: \(value)")
}