Wie entferne ich ein Schlüssel-Wert-Paar aus dem schnellen Wörterbuch?

81

Ich möchte ein Schlüssel-Wert-Paar wie möglich aus einem Wörterbuch entfernen, wenn dies möglich ist.

var dict: Dictionary<String,String> = [:]
var willRemoveKey = "SomeKey"
dict.removePair(willRemoveKey) //that's what I need
mach es besser
quelle

Antworten:

165

Sie können dies verwenden:

dict[willRemoveKey] = nil

oder dieses:

dict.removeValueForKey(willRemoveKey)

Der einzige Unterschied besteht darin, dass der zweite den entfernten Wert zurückgibt (oder null, wenn er nicht vorhanden war).

Swift 3

dict.removeValue(forKey: willRemoveKey)
Kametrixom
quelle
3
Dies sollte jetzt aufgerufen werden, dict.removeValue(willRemoveKey)da es so aussieht, als ob .removeValueForKey umbenannt wurde - danke für die Hilfe!
Coty Embry
So schön und so sauber. Liebe es!
Dustinrwh
4
Wenn Ihre Werte optional sind, wie kann die tiefgestellte Syntax funktionieren?
WiseOldDuck
5
Hat jemand anderes bemerkt, dass die Dokumente sagen, dass dies O (n) ist, wobei n die Größe des Wörterbuchs ist?!
Andrew
1
@WiseOldDuck Durch Zuweisen des Index wird nilimmer der Schlüssel gelöscht . Um einen wahren nilWert in einem Wörterbuch mit einem optionalen Werttyp zuzuweisen, weisen Sie zu .some(nil).
BallpointBen
30

Swift 5 , Swift 4 und Swift 3 :

x.removeValue(forKey: "MyUndesiredKey")

Prost

Sasho
quelle
7
dict.removeValue(forKey: willRemoveKey)

Oder Sie können die tiefgestellte Syntax verwenden:

dict[willRemoveKey] = nil
Fantini
quelle
0

Entfernen Sie mit Prüfbedingungen in LOOP

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
quelle