循环通过字典找到价值

时间:2017-06-25 14:08:37

标签: swift

通常我只是进入字典并在里面找到值。在这种情况下,我需要介入,循环查找值然后再次退出然后找到不同的值。例如:

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}}。

4 个答案:

答案 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)")
}