簡體   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