#swift
#swift
Вопрос:
Как использовать remove(at: DictionaryIndex<Key, Value>)
для удаления пар из словаря в Swift?
Ответ №1:
Вы можете получить индекс пары ключ / значение в словаре, а затем удалить запись:
var dict = ["foo": 1, "bar": 2, "baz": 3]
print(dict) // ["bar": 2, "baz": 3, "foo": 1]
if let idx = dict.index(forKey: "bar") {
dict.remove(at: idx)
print(dict) // ["baz": 3, "foo": 1]
}
Однако индексы словарных записей имеют ограниченное применение, поскольку порядок пар ключ / значение в словаре не указан,
а вставка или удаление записи делает недействительными все существующие словарные
индексы.
Вы бы достигли того же результата с
dict["bar"] = nil
или
dict.removeValue(forKey: "bar")
Эти методы отличаются только тем, что они возвращают:
dict["bar"] = nil
не возвращает значение.dict.removeValue(forKey: "bar")
возвращает удаленное значение (как необязательное), если данный ключ присутствовал в словаре, иnil
в противном случае.dict.remove(at: idx)
возвращает удаленную пару ключ / значение в виде кортежа. Возвращаемое значение не является необязательным, поскольку оно принимает индекс существующей записи в качестве аргумента.