Як я можу отримати значення ключа зі словника в Swift?


83

У мене є словник Swift. Я хочу отримати значення мого ключа. Об'єкт для ключового методу у мене не працює. Як отримати значення ключа словника?

Це мій словник:

var companies = ["AAPL" : "Apple Inc", "GOOG" : "Google Inc", "AMZN" : "Amazon.com, Inc", "FB" : "Facebook Inc"]

for name in companies.keys { 
    print(companies.objectForKey("AAPL"))
}

5
Це все висвітлено в документації: developer.apple.com/library/prerelease/mac/documentation/Swift/…
Martin R

"Ви також можете використовувати синтаксис індексу, щоб отримати значення зі словника для певного ключа ... if let airportName = airports["DUB"] { … }"
Мартін Р

Відповіді:


169

Використовуйте підписку, щоб отримати доступ до значення ключа словника. Це поверне необов’язковий:

let apple: String? = companies["AAPL"]

або

if let apple = companies["AAPL"] {
    // ...
}

Ви також можете перерахувати всі ключі та значення:

var companies = ["AAPL" : "Apple Inc", "GOOG" : "Google Inc", "AMZN" : "Amazon.com, Inc", "FB" : "Facebook Inc"]

for (key, value) in companies {
    print("\(key) -> \(value)")
}

Або перелічіть усі значення:

for value in Array(companies.values) {
    print("\(value)")
}

24

З Документів Apple

Ви можете використовувати синтаксис індексу, щоб отримати значення зі словника для певного ключа. Оскільки можна запитувати ключ, для якого не існує значення, індекс словника повертає необов’язкове значення типу значення словника. Якщо словник містить значення для запитуваного ключа, індекс повертає необов’язкове значення, що містить існуюче значення для цього ключа. В іншому випадку індекс повертає нуль:

https://developer.apple.com/documentation/swift/dictionary

if let airportName = airports["DUB"] {
    print("The name of the airport is \(airportName).")
} else {
    print("That airport is not in the airports dictionary.")
}
// prints "The name of the airport is Dublin Airport."
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.