Jak usunąć parę klucz-wartość ze słownika Swift?

83

Chcę usunąć parę klucz-wartość ze słownika, jak w przykładzie, jeśli to możliwe.

var dict: Dictionary<String,String> = [:]
var willRemoveKey = "SomeKey"
dict.removePair(willRemoveKey) //that's what I need
Zrób to lepiej
źródło

Odpowiedzi:

169

Możesz użyć tego:

dict[willRemoveKey] = nil

albo to:

dict.removeValueForKey(willRemoveKey)

Jedyna różnica polega na tym, że druga zwróci usuniętą wartość (lub zero, jeśli nie istniała)

Szybki 3

dict.removeValue(forKey: willRemoveKey)
Kametrixom
źródło
3
powinno to teraz zostać nazwane, dict.removeValue(willRemoveKey)ponieważ wygląda na to, że nazwa .removeValueForKey została zmieniona - dzięki za pomoc!
Coty Embry
Tak ładnie i tak czysto. Kocham to!
dustinrwh
4
Jeśli wartości są opcjonalne, jak może działać składnia indeksu dolnego?
WiseOldDuck,
5
Czy ktoś jeszcze zauważył, że dokumentacja mówi, że to jest O (n), gdzie n jest rozmiarem słownika ?!
Andrew,
1
@WiseOldDuck Przypisanie indeksu dolnego tak, aby nilzawsze usuwał klucz. Aby przypisać prawdziwą nilwartość w słowniku z opcjonalnym Typem wartości, przypisz .some(nil).
BallpointBen
30

Swift 5 , Swift 4 i Swift 3 :

x.removeValue(forKey: "MyUndesiredKey")

Twoje zdrowie

Sasho
źródło
7
dict.removeValue(forKey: willRemoveKey)

Lub możesz użyć składni indeksu dolnego:

dict[willRemoveKey] = nil
Fantini
źródło
0

Usuń, sprawdzając warunki w pętli

var eventDateDict = [String:String]()
//Declarations
var tempDict = eventDateDict
        for value in tempDict{
            let getDate = value.key
            if getDate < Date(){
                eventDateDict.removeValue(forKey: value.key)
            }
        }
Govind Wadhwa
źródło