Как удалить пары из словаря с определенным индексом — Swift?

#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) возвращает удаленную пару ключ / значение в виде кортежа. Возвращаемое значение не является необязательным, поскольку оно принимает индекс существующей записи в качестве аргумента.