![](/img/trans.png)
[英]Swift 3 - Filter and sort array of dictionaries, by dictionary values, with values from array
[英]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.