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?
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.
sie können auf folgende Weise hinzufügen und Dictionary
in NSMutableDictionary
ändern.
dict["key"] = "value"
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)
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]
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)
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)
Wenn Sie in Swift NSDictionary verwenden, können Sie setValue
verwenden:
dict.setValue("value", forKey: "key")
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.
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"
var dict = ["name": "Samira", "surname": "Sami"]
// Add a new enter code herekey with a value
dict["email"] = "[email protected]"
print(dict)
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!
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.
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)
So fügen Sie neue Elemente hinzu:
listParrameters["your parrameter"] = value