Как я могу получить значение ключа из словаря в Swift?


84

У меня есть словарь 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/…
Мартин Р.

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

Ответы:


172

Используйте нижний индекс для доступа к значению ключа словаря. Это вернет необязательный:

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)")
}

25

Из Apple Docs

Вы можете использовать синтаксис подстрочного индекса, чтобы получить значение из словаря для определенного ключа. Поскольку можно запросить ключ, для которого не существует значения, индекс словаря возвращает необязательное значение типа значения словаря. Если словарь содержит значение для запрошенного ключа, нижний индекс возвращает необязательное значение, содержащее существующее значение для этого ключа. В противном случае индекс возвращает ноль:

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.