Dictionary
с помощью проверки доступного только для чтения свойства count
:
var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
print("Словарь аэропортов содержит следующее количество записей: \(airports.count).")
// Выведет "Словарь аэропортов содержит следующее количество записей: 2."
isEmpty
в качестве короткой формы для проверки того, что свойство count
равно 0:
if airports.isEmpty {
print("Словарь аэропортов пуст.")
} else {
print("Словарь аэропортов не пуст.")
}
// Выведет "Словарь аэропортов не пуст."
airports["LHR"] = "London"
// словарь airports теперь содержит 3 элемента
airports["LHR"] = "London Heathrow"
// значение "LHR" изменилось на "London Heathrow"
updateValue(_:forKey:)
для задания и обновления значения для определённого ключа. Как и примеры сабскриптов, рассмотренные ранее, метод updateValue(_:forKey:)
устанавливает значение для ключа, если по нему ничего не существует, или обновляет значение, если ключ уже задан. В отличие от сабскрипта метод updateValue(_:forKey:)
возвращает старое значение после выполнения обновления. Это позволяет Вам проверить, произошло или нет обновление.
updateValue(_:forKey:)
возвращает опциональную величину для типа значения словаря. Для словаря, который хранит значения типа String
, например, метод вернёт величину типа String?
или "опциональный String". Этот опционал содержит старое значение для этого ключа, если оно существовало до обновления, или nil
, если никакого значения не было:
if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") {
print("Старое значение для ключа DUB было \(oldValue).")
}
// Выведет "Старое значение для ключа DUB было Dublin."
nil
:
if let airportName = airports["DUB"] {
print("Имя аэропорта \(airportName).")
} else {
print("Такого аэропорта нет в словаре аэропортов.")
}
// Выведет "Имя аэропорта Dublin Airport."
nil
в качестве значения для этого ключа:
airports["APL"] = "Apple International"
// "Apple International" - это несуществующий аэропорт для APL, так что удалите его
airports["APL"] = nil
// APL теперь был удалён из словаря
removeValue(forKey:)
. Этот метод удаляет пару ключ-значение, если она существует, и возвращает удалённое значение или значение nil
, если значение не существовало:
if let removedValue = airports.removeValue(forKey: "DUB") {
print("Имя удалённого аэропорта: \(removedValue).")
} else {
print("Словарь аэропортов теперь содержит значение для DUB.")
}
// Выведет "Имя удалённого аэропорта: Dublin Airport."
(key, value)
, и Вы можете декомпозировать члены кортежа во временные константы или переменные в качестве итерирования:
for (airportCode, airportName) in airports {
print("\(airportCode): \(airportName)")
}
key
и values
:
for airportCode in airports.keys {
print("Код аэропорта: \(airportCode)")
}
// Код аэропорта: LHR
// Код аэропорта: YYZ
for airportName in airports.values {
print("Имя аэропорта: \(airportName)")
}
// Имя аэропорта: London Heathrow
// Имя аэропортаe: Toronto Pearson
Array
, инициализируйте новый массив со свойствами keys
или values
:
let airportCodes = [String](airports.keys)
// airportCodes теперь ["YYZ", "LHR"]
let airportNames = [String](airports.values)
// airportNames теперь ["Toronto Pearson", "London Heathrow"]
Dictionary
в Swift не имеет заданного порядка. Для итерирования через ключи или значения словаря в заданном порядке используйте метод sorted()
на свойствах keys
или values
.
Int
и каким-нибудь другим типом.