webentwicklung-frage-antwort-db.com.de

Wie füge ich in Swift Elemente in ein Wörterbuch ein?

Ich habe ein einfaches Wörterbuch, das wie folgt definiert ist:

var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]

Jetzt möchte ich ein Element in dieses Wörterbuch einfügen: 3 : "efg"

Wie kann ich 3 : "efg" in dieses vorhandene Wörterbuch einfügen?

178
Dharmesh

Sie verwenden NSDictionary. Sofern Sie diesen Typ nicht ausdrücklich benötigen, empfehle ich die Verwendung eines Swift Wörterbuchs.

Sie können ein Swift Wörterbuch an jede Funktion übergeben, die NSDictionary erwartet, ohne dass zusätzliche Arbeit anfällt, da Dictionary<> und NSDictionary sich nahtlos überbrücken. Der Vorteil der systemeigenen Methode Swift besteht darin, dass das Wörterbuch generische Typen verwendet. Wenn Sie sie also mit Int als Schlüssel und String als Wert definieren, können Sie keine Schlüssel versehentlich verwenden und Werte verschiedener Typen. (Der Compiler überprüft die Typen in Ihrem Namen.)

Basierend auf dem, was ich in Ihrem Code sehe, verwendet Ihr Wörterbuch Int als Schlüssel und String als Wert. Um eine Instanz zu erstellen und ein Element zu einem späteren Zeitpunkt hinzuzufügen, können Sie diesen Code verwenden:

var dict = [1: "abc", 2: "cde"] // dict is of type Dictionary<Int, String>
dict[3] = "efg"

Wenn Sie es später einer Variablen vom Typ NSDictionary zuweisen müssen, führen Sie einfach eine explizite Umwandlung durch:

let nsDict = dict as! NSDictionary

Und, wie bereits erwähnt, wenn Sie es an eine Funktion übergeben möchten, die NSDictionary erwartet, übergeben Sie es so, wie es ist, ohne Umwandlung oder Umwandlung.

203
Antonio

sie können auf folgende Weise hinzufügen und Dictionary in NSMutableDictionary ändern.

dict["key"] = "value"
96
yashwanth77

Ich weiß, dass dies sehr spät kommen könnte, aber es könnte sich für jemanden als nützlich erweisen. Zum Anhängen von Schlüsselwertpaaren an Wörterbücher in Swift können Sie also die Methode pdateValue (value:, forKey:) wie folgt verwenden:

var dict = [ 1 : "abc", 2 : "cde"]
dict.updateValue("efg", forKey: 3)
print(dict)
62
HeadOnn

Swift 3 - XCODE 8.1

var dictionary =  [Int:String]() 

dictionary.updateValue(value: "Hola", forKey: 1)
dictionary.updateValue(value: "Hello", forKey: 2)
dictionary.updateValue(value: "Aloha", forKey: 3)

Ihr Wörterbuch enthält also:

wörterbuch [1: Hola, 2: Hallo, 3: Aloha]

41
Cristian Mora

Swift 3 +

Beispiel zum Zuweisen neuer Werte zu Dictionary. Sie müssen es als NSMutableDictionary deklarieren:

var myDictionary: NSMutableDictionary = [:]
let newValue = 1
myDictionary["newKey"] = newValue
print(myDictionary)
16
Dasoga

Wenn Ihr Wörterbuch Int bis String ist, können Sie einfach Folgendes tun:

dict[3] = "efg"

Wenn Sie Elemente zum Wert des Wörterbuchs hinzufügen möchten, ist dies eine mögliche Lösung:

var dict = Dictionary<String, Array<Int>>()

dict["key"]! += [1]
dict["key"]!.append(1)
dict["key"]?.append(1)
16
Alex Gidan

Wenn Sie in Swift NSDictionary verwenden, können Sie setValue verwenden:

dict.setValue("value", forKey: "key")
12
lojals

Gegeben zwei Wörterbücher wie folgt:

var dic1 = ["a": 1, "c": 2]
var dic2 = ["e": 3, "f": 4]

So können Sie alle Elemente von dic2 bis dic1 hinzufügen:

dic2.map {
   dic1[$0.0] = $0.1
}

Prost A.

9

Dict.updateValue aktualisiert den Wert für den vorhandenen Schlüssel aus dem Wörterbuch oder fügt ein neues Schlüssel-Wert-Paar hinzu, wenn der Schlüssel nicht vorhanden ist.

Beispiel-

var caseStatusParams: [String: AnyObject] = ["userId" : UserDefault.userID ]
caseStatusParams.updateValue("Hello" as AnyObject, forKey: "otherNotes")

Ergebnis-

▿  : 2 elements
    - key : "userId"
    - value : 866
▿  : 2 elements
    - key : "otherNotes"
    - value : "Hello"
8
Varsha Gaikwad
var dict = ["name": "Samira", "surname": "Sami"]
// Add a new enter code herekey with a value
dict["email"] = "[email protected]"
print(dict)
2
Queen Semiramis

Für die Fellows, die [String:Any] anstelle von Dictionary verwenden, ist die folgende Erweiterung

extension Dictionary where Key == String, Value == Any {

    mutating func append(anotherDict:[String:Any]) {
        for (key, value) in anotherDict {
            self.updateValue(value, forKey: key)
        }
    }
}

Viel Spaß beim Anhängen!

2
Dhaval H. Nena

Bisher habe ich die beste Möglichkeit gefunden, Daten an ein Wörterbuch anzuhängen, indem ich eine der Funktionen höherer Ordnung von Swift verwendet habe, d. H. "Reduzieren". Befolgen Sie das folgende Code-Snippet:

newDictionary = oldDictionary.reduce(*newDictionary*) { r, e in var r = r; r[e.0] = e.1; return r }

@ Dharmesh In Ihrem Fall wird es sein,

newDictionary = dict.reduce([3 : "efg"]) { r, e in var r = r; r[e.0] = e.1; return r }

Bitte lassen Sie mich wissen, wenn Sie Probleme bei der Verwendung der obigen Syntax haben.

1
Shobhit C

Ab Swift 5 funktioniert die folgende Codesammlung.

 // main dict to start with
 var myDict : Dictionary = [ 1 : "abc", 2 : "cde"]

 // dict(s) to be added to main dict
 let myDictToMergeWith : Dictionary = [ 5 : "l m n"]
 let myDictUpdated : Dictionary = [ 5 : "lmn"]
 let myDictToBeMapped : Dictionary = [ 6 : "opq"]

 myDict[3]="fgh"
 myDict.updateValue("ijk", forKey: 4)

 myDict.merge(myDictToMergeWith){(current, _) in current}
 print(myDict)

 myDict.merge(myDictUpdated){(_, new) in new}
 print(myDict)

 myDictToBeMapped.map {
     myDict[$0.0] = $0.1
 }
 print(myDict)
1
Lord Anubis

So fügen Sie neue Elemente hinzu:

listParrameters["your parrameter"] = value
0
Tung Tran