web-dev-qa-db-de.com

Swift: ein leeres Wörterbuch deklarieren

Ich fange an, Swift zu lernen, indem ich dem iBook -The Swift Programming Language auf Swift folge, das von Apple bereitgestellt wird. Das Buch sagt, um ein leeres Wörterbuch zu erstellen, sollte [:] genauso verwendet werden wie bei der Deklaration von array als []:

Ich habe ein leeres Array wie folgt deklariert:

let emptyArr = [] // or String[]()

Bei der Deklaration eines leeren Wörterbuchs erhalte ich jedoch einen Syntaxfehler:

let emptyDict = [:]

Wie deklariere ich ein leeres Wörterbuch?

152
z22
var emptyDictionary = [String: String]()

Das

var populatedDictionary = ["key1": "value1", "key2": "value2"]

Hinweis : Wenn Sie den Inhalt des Wörterbuchs im Laufe der Zeit ändern möchten, müssen Sie es als var (Variable) deklarieren. Sie can ein leeres Wörterbuch als let (Konstante) deklarieren, ist jedoch sinnlos, wenn Sie beabsichtigen, den Inhalt im Laufe der Zeit zu ändern, da die Konstante nach der Initialisierung nicht mehr geändert werden kann.


Alte Antwort :

Das Erstellen eines leeren Wörterbuchs vom Typ <String, String> würde folgendermaßen aussehen:

var emptyDictionary = Dictionary<String, String>()
268
damirstuhec

Sie können [:] nur verwenden, wenn Typinformationen verfügbar sind.

Sie müssen es in diesem Fall explizit angeben:

var dict = Dictionary<String, String>()

var bedeutet, dass es veränderbar ist, sodass Sie Einträge hinzufügen können .___ Wenn Sie es zu einer let machen, können Sie es nicht weiter modifizieren (let bedeutet konstant).

Sie können die Kurzschreibweise [:] verwenden, wenn beispielsweise auf die Typinformationen geschlossen werden kann

var dict = ["key": "value"]

// stuff

dict = [:] // ok, I'm done with it

Im letzten Beispiel hat das Wörterbuch in der ersten Zeile einen Typ Dictionary<String, String>. Beachten Sie, dass Sie es nicht explizit angeben mussten, aber es wurde abgeleitet.

38

Die Swift-Dokumentation empfiehlt den folgenden Weg, um ein leeres Wörterbuch zu initialisieren:

var emptyDict = [String: String]()

Als ich zum ersten Mal auf diese Frage gestoßen bin, war ich etwas verwirrt, weil verschiedene Antworten unterschiedliche Wege zeigten, ein leeres Wörterbuch zu initialisieren. Es stellt sich heraus, dass es tatsächlich viele Möglichkeiten gibt, wie Sie dies tun können, obwohl einige überflüssig oder übermäßig wortreich sind, wenn Swift die Möglichkeit hat, den Typ zu bestimmen. 

var emptyDict = [String: String]()
var emptyDict = Dictionary<String, String>()
var emptyDict: [String: String] = [:]
var emptyDict: [String: String] = [String: String]()
var emptyDict: [String: String] = Dictionary<String, String>()
var emptyDict: Dictionary = [String: String]()
var emptyDict: Dictionary = Dictionary<String, String>()
var emptyDict: Dictionary<String, String> = [:]
var emptyDict: Dictionary<String, String> = [String: String]()
var emptyDict: Dictionary<String, String> = Dictionary<String, String>()

Nachdem Sie ein leeres Wörterbuch erstellt haben, können Sie ein Schlüsselwertpaar wie folgt hinzufügen:

emptyDict["some key"] = "some value"

Wenn Sie Ihr Wörterbuch erneut leeren möchten, können Sie Folgendes tun:

emptyDict = [:]

Die Typen sind immer noch <String, String>, da sie so initialisiert wurden.

26
Suragch

Verwenden Sie dies wird funktionieren.

var emptyDict = [String: String]()
19
Lim Thye Chean

Sie können es einfach so erklären:

var emptyDict:NSMutableDictionary = [:]
15
Jio

Sie müssen dem Wörterbuch einen Typ geben

// empty dict with Ints as keys and Strings as values
var namesOfIntegers = Dictionary<Int, String>()

Wenn der Compiler auf den Typ schließen kann, können Sie die kürzere Syntax verwenden

namesOfIntegers[16] = "sixteen"
// namesOfIntegers now contains 1 key-value pair
namesOfIntegers = [:]
// namesOfIntegers is once again an empty dictionary of type Int, String
6
nevan king

Swift:

var myDictionary = Dictionary<String, AnyObject>()
5
Juan Boero

Schnell 4 

let dicc = NSDictionary()

//MARK: - This is empty dictionary
let dic = ["":""]

//MARK:- This is variable dic means if you want to put variable 
let dic2 = ["":"", "":"", "":""]

//MARK:- Variable example
let dic3 = ["name":"Shakeel Ahmed", "imageurl":"https://abc?abc.abc/etc", "address":"Rawalpindi Pakistan"]

//MARK: - This is 2nd Variable Example dictionary
let dic4 = ["name": variablename, "city": variablecity, "Zip": variablezip]

//MARK:- Dictionary String with Any Object
var dic5a = [String: String]()
//MARK:- Put values in dic
var dic5a = ["key1": "value", "key2":"value2", "key3":"value3"]

var dic5b = [String:AnyObject]()
dic5b = ["name": fullname, "imageurl": imgurl, "language": imgurl] as [String : AnyObject]

or
//MARK:- Dictionary String with Any Object
let dic5 = ["name": fullname, "imageurl": imgurl, "language": imgurl] as [String : AnyObject]

//MARK:- More Easy Way
let dic6a = NSDictionary()
let dic6b = NSMutalbeDictionary()
4
Shakeel Ahmed

Ich spiele auch damit. Es scheint seltsam, dass Sie einfach ein leeres Wörterbuch deklarieren und dann ein Schlüssel/Wert-Paar hinzufügen können:

var emptyDictionary = Dictionary<String, Float>()
var flexDictionary = [:]
emptyDictionary["brian"] = 4.5
flexDictionary["key"] = "value" // ERROR : cannot assign to the result of this expression

Sie können jedoch ein Wörterbuch erstellen, das verschiedene Werttypen akzeptiert, indem Sie den Typ "Any" wie folgt verwenden:

var emptyDictionary = Dictionary<String, Any>()
emptyDictionary["brian"] = 4.5
emptyDictionary["mike"] = "hello"
4
Lee Probert

Sie müssen den Datentyp explizit angeben, oder der Typ kann abgeleitet werden, wenn Sie etwas in Swift deklarieren.

Swift 3

Das Beispiel unten deklariert ein Wörterbuch mit Schlüssel als Int-Typ und den Wert als String-Typ.

Methode 1: Initialisierung

let dic = Dictionary<Int, String>()

Methode 2: Abkürzungssyntax

let dic = [Int:String]()

Methode 3: Wörterbuch-Literal

var dic = [1: "Sample"]
// dic has NOT to be a constant
dic.removeAll()
3
Xinyang Li

Wenn Sie ein generisches Wörterbuch mit einem beliebigen Typ erstellen möchten

var dictionaryData = [AnyHashable:Any]()
2
reetu

Wörterbücher in Swift deklarieren und initialisieren

Wörterbuch der Zeichenfolge

var stringDict: [String: String] = [String: String]()

OR

var stringDict: Dictionary<String, String> = Dictionary<String, String>()

Wörterbuch der Int

var stringDict: [String: Int] = [String: Int]()

OR

var stringDict: Dictionary<String, Int> = Dictionary<String, Int>()

Wörterbuch von AnyObject

var stringDict: [String: AnyObject] = [String: AnyObject]()

OR

var stringDict: Dictionary<String, AnyObject> = Dictionary<String, AnyObject>()

Wörterbuch der Zeichenfolge

var stringDict: [String: [String]] = [String: [String]]()

OR

var stringDict: Dictionary<String, Array<String>> = Dictionary<String, Array<String>>()

Array von Wörterbüchern von String

var stringDict: [[String: String]] = [[String: String]]()

OR

var stringDict: Array<Dictionary<String, String>> = Array<Dictionary<String, String>>()
1

Ich benutze normalerweise 

var dictionary:[String:String] = [:]
dictionary.removeAll()
1
Lind el Loren

Sie können es mit dem folgenden Wert als null deklarieren:

var assoc : [String:String]

Dann ist es schön, dass du schon gesetzt hast (beachte, dass ich var verwende und nicht lasse, denke an diese als veränderlich und unveränderlich). Dann kannst du es später füllen:

assoc = ["key1" : "things", "key2" : "stuff"]
0
newshorts

Sie können den folgenden Code verwenden:

var d1 = Dictionary<Int, Int>()
var d2 = [Int: Int]()
var d3: Dictionary<Int, Int> = [Int : Int]()
var d4: [Int : Int] = [:]
0
levan_amateur