G'天,
我试图使用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"的值。直接来自字典本身,如果有许多不同的字典而不是两个字典,这将是麻烦的。
非常感谢您提供的任何帮助!
答案 0 :(得分:2)
您可以利用map
方法,其目的是遍历数组并将每个元素转换为另一种类型:
arrayOfDictionaries.map { (dict: [String : String]) -> String? in
return dict["location"]
}
传递给map的闭包接收一个数组元素,并返回转换后的值 - 在您的情况下,它检索并返回location
键的值。
您也可以使用紧凑形式:
arrayOfDictionaries.map { $0["location"] }
请注意,此方法返回一个可选字符串数组,因为字典下标运算符始终返回一个可选字符串。如果您需要非选项数组,那么这是不安全版本:
let x = arrayOfDictionaries.map { $0["location"]! }
当然如果" location"的值对于数组元素,key不存在,将引发运行时异常。
有关Swift Standard Template Library
的map
的更多信息
答案 1 :(得分:0)
有几种方法可以做到这一点。一种是使用键值编码(KVC):
let locations = (arrayOfDictionaries as NSArray).valueForKey("location") as [String]
答案 2 :(得分:0)
我看到它的方式,你将从之前列出的城市填充一个新的字符串数组。
var locations = [String]()
for dictionary in arrayOfDictionaries{
locations.append(dictionary["location"]!)
}
println(locations)