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

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)

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


7
dict.removeValue(forKey: willRemoveKey)

Oder Sie können die tiefgestellte Syntax verwenden:

dict[willRemoveKey] = nil

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)
            }
        }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.