Ich habe ein einfaches Wörterbuch, das wie folgt definiert ist:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
Jetzt möchte ich diesem Wörterbuch ein Element hinzufügen: 3 : "efg"
Wie kann ich 3 : "efg"
dieses vorhandene Wörterbuch anhängen ?
swift
nsdictionary
Dharmesh Kheni
quelle
quelle
Antworten:
Du benutzt
NSDictionary
. Sofern Sie aus irgendeinem Grund nicht ausdrücklich diesen Typ benötigen, empfehle ich die Verwendung eines Swift-Wörterbuchs.Sie können ein Swift-Wörterbuch an jede Funktion übergeben, die
NSDictionary
ohne zusätzliche Arbeit erwartet wird , daDictionary<>
undNSDictionary
nahtlos miteinander verbunden werden. Der Vorteil der nativen Swift-Methode besteht darin, dass das Wörterbuch generische Typen verwendet. Wenn Sie es alsoInt
als Schlüssel undString
als Wert definieren, können Sie nicht fälschlicherweise Schlüssel und Werte verschiedener Typen verwenden. (Der Compiler überprüft die Typen in Ihrem Namen.)Basierend auf dem, was ich in Ihrem Code sehe, wird Ihr Wörterbuch
Int
als Schlüssel undString
als Wert verwendet. Um eine Instanz zu erstellen und ein Element zu einem späteren Zeitpunkt hinzuzufügen, können Sie diesen Code verwenden:Wenn Sie es später einer Variablen vom
NSDictionary
Typ zuweisen müssen, führen Sie einfach eine explizite Umwandlung durch:Wenn Sie es, wie bereits erwähnt, an eine erwartete Funktion übergeben möchten, übergeben Sie es unverändert
NSDictionary
ohne Umwandlung oder Konvertierung.quelle
Dictionary
Objekt zu erstellen, zu bearbeiten undNSDictionary
bei Bedarf am Ende zu konvertieren . Wunderbar. Vielen Dank."Antonio"
,1
umdic[1]
zurückzukehren"abc, Antonio"
.Sie können mit der folgenden Art und Weise und Änderung hinzufügen
Dictionary
zuNSMutableDictionary
quelle
Cannot assign to the result of this expression
dict["testval"] = "test"
.. Fehlerfatal error: unexpectedly found nil while unwrapping an Optional value
Ich weiß, dass dies sehr spät kommen könnte, aber es kann sich für jemanden als nützlich erweisen. Um also schnell Schlüsselwertpaare an Wörterbücher anzuhängen , können Sie die Methode updateValue (value :, forKey :) wie folgt verwenden:
quelle
SWIFT 3 - XCODE 8.1
Ihr Wörterbuch enthält also:
Wörterbuch [1: Hola, 2: Hallo, 3: Aloha]
quelle
dictionary[1] = "Hola"
?Wenn Ihr Wörterbuch ist
Int
,String
können Sie einfach tun:Wenn Sie dem Wert des Wörterbuchs Elemente hinzufügen möchten, ist dies eine mögliche Lösung:
quelle
Swift 3+
Beispiel zum Zuweisen neuer Werte zum Wörterbuch. Sie müssen es als NSMutableDictionary deklarieren:
quelle
Wenn Sie in Swift NSDictionary verwenden , können Sie Folgendes verwenden
setValue
:quelle
Gegeben zwei Wörterbücher wie folgt:
So können Sie alle Elemente von dic2 zu dic1 hinzufügen :
Prost A.
quelle
.forEach
anstatt ,.map
wie wir brauchen keine Rückkehr abgebildet ArrayDict.updateValue
Aktualisiert den Wert für den vorhandenen Schlüssel aus dem Wörterbuch oder fügt ein neues neues Schlüssel-Wert-Paar hinzu, wenn der Schlüssel nicht vorhanden ist.Beispiel-
Ergebnis-
quelle
Für die Fellows, die
[String:Any]
anstelle vonDictionary
unten verwenden, ist die Erweiterungquelle
Ab Swift 5 funktioniert die folgende Codesammlung.
quelle
Es gibt keine Funktion zum Anhängen der Daten im Wörterbuch. Sie weisen den Wert nur dem neuen Schlüssel im vorhandenen Wörterbuch zu. Das Wörterbuch wird automatisch aufgewertet.
Die Ausgabe wird wie folgt sein
["Name": "Aloha", "Benutzer": "Aloha 2", "Fragen": "" Bist du mein "?"]
quelle
quelle
quelle
Um neue Elemente hinzuzufügen, setzen Sie einfach:
quelle
Bis jetzt habe ich am besten herausgefunden, wie ich Daten an ein Wörterbuch anhänge, indem ich eine der Funktionen höherer Ordnung von Swift verwende, dh "reduzieren". Folgen Sie dem folgenden Code-Snippet:
@ Dharmesh In deinem Fall wird es sein,
Bitte lassen Sie mich wissen, wenn Sie Probleme bei der Verwendung der obigen Syntax finden.
quelle
Swift 5 Happy Coding
quelle
Ich habe die Wörterbucherweiterung hinzugefügt
Sie verwenden können ,
cloneWith
wie diesequelle
Wenn Sie NSDictionary ändern oder aktualisieren möchten, geben Sie es zunächst als NSMutableDictionary ein
dann einfach benutzen
quelle