繁体   English   中英

从字典中访问值,这些值是Swift中数组的一部分

[英]Accessing values from Dictionaries that are part of an Array in Swift

天儿真好,

我正在尝试使用一个for循环来访问Swift字典数组中同一键的值。

例如,

let dictionaryOne = [
                    "name": "Peter",
                    "age": "42",
                    "location": "Milwaukee"]

let dictionaryTwo = [
                    "name": "Paul",
                    "age": "89",
                    "location": "Denver"]

let arrayOfDictionaries = [dictionaryOne, dictionaryTwo]

我正在尝试使用for循环创建一个函数,该函数将输出包含位置值的数组,即[“ Milwaukee”,“ Denver”]

我看过其他答复,但我只能找到如何直接从字典本身访问“ location”的值的方法,如果存在许多不同的字典,而不仅仅是两个,那将很麻烦。

非常感谢您提供的任何帮助!

您可以利用map方法,其目的是循环遍历数组并将每个元素转换为另一种类型:

arrayOfDictionaries.map { (dict: [String : String]) -> String? in
    return dict["location"]
}

传递给地图的闭包接收一个数组元素,并返回转换后的值-在您的情况下,它检索并返回location键的值。

您也可以使用紧凑形式:

arrayOfDictionaries.map { $0["location"] }

请注意,此方法返回可选字符串数组,因为字典下标运算符始终返回可选字符串。 如果您需要非可选数组,那么这是不安全的版本:

let x = arrayOfDictionaries.map { $0["location"]! }

当然,如果数组元素的“位置”键值不存在,则会引发运行时异常。

Swift标准模板库中有关map更多信息

有几种方法可以做到这一点。 一种是使用键值编码(KVC):

let locations = (arrayOfDictionaries as NSArray).valueForKey("location") as [String]

我的看法是,您将从以前列出的城市中填充新的字符串数组。

var locations = [String]()

for dictionary in arrayOfDictionaries{
    locations.append(dictionary["location"]!)
}

println(locations)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM