2014-11-20 7 views
23

Ich versuche, mehrere Objekte zu NSDictionary, wieswift: Fügen Sie mehr <key, value> Objekte NSDictionary

var myDict: NSDictionary = [["fname": "abc", "lname": "def"], ["fname": "ghi", "lname": "jkl"], ...] 

Ist es überhaupt möglich hinzuzufügen, dies zu tun? Wenn nicht, schlagen Sie bitte einen besseren Weg vor. Ich muss dieses NSDictionary tatsächlich in JSON-Zeichenfolge konvertieren und an den Server senden, so dass ich mehrere Objekte in NSDictionary benötige.

+2

Haben Sie es versucht? aber das sieht aus wie ein Array von Wörterbüchern – Antonio

+0

Nun, Ihr Root-Objekt gibt es ein Array nicht ein Wörterbuch so gibt es ... – Fogmeister

Antwort

42

Sie können auf jeden Fall ein Wörterbuch von Wörterbüchern erstellen. Allerdings müssen Sie eine andere Syntax dafür:

var myDictOfDict:NSDictionary = [ 
    "a" : ["fname": "abc", "lname": "def"] 
, "b" : ["fname": "ghi", "lname": "jkl"] 
, ... : ... 
] 

Was haben Sie sieht aus wie ein Array von Wörterbüchern, aber:

var myArrayOfDict: NSArray = [ 
    ["fname": "abc", "lname": "def"] 
, ["fname": "ghi", "lname": "jkl"] 
, ... 
] 

JSON zu erhalten, die

{"Data": [{"User": myDict1}, {"User": myDict1},...]} 
sieht wie folgt aus

müssen Sie die oben Array in ein Wörterbuch hinzuzufügen, wie folgt aus:

var myDict:NSDictionary = ["Data" : myArrayOfDict] 
+0

Wenn ich Array von Wörterbüchern verwenden, ist es dann möglich, das in JSON-String zu konvertieren? Und ziehen Sie die Daten auf der Serverseite heraus? –

+0

@SrujanSimha Ich bin mir ziemlich sicher, dass die Konvertierung in JSON ohne Probleme für jede Kombination von Standard-Collection-Typen gehen sollte. Was die Serverseite betrifft, müssen Sie sich das vom Server unterstützte Format ansehen. Um dies zu testen, konvertieren Sie Ihr Array von Wörterbüchern in JSON-Zeichenfolge und schreiben Sie in das Protokoll. Überprüfen Sie, ob die Zeichenfolge wie erwartet aussieht und passen Sie sie gegebenenfalls an. – dasblinkenlight

+0

Ok. Nehmen wir an, ich habe ein Wörterbuch 'myDict1 = [" name ":" abc "," status ": 1]' und es gibt mehrere Personen, ich habe myDict1 für jede Person erstellt und das zu einem anderen Wörterbuch hinzugefügt. 'MyDict2 = [ "Benutzer": myDict1] '. Kann ich mehrere Werte für denselben Schlüssel haben? Genau wie JSON: '{" Data ": [{" User ": myDict1}, {" Benutzer ": myDict1}, ...]}' –

0

SWIFT 3,0

  • Liste item

Frist von allem, was Sie NSArray erstellen und dann können Sie Array in NSMutableDictionary mit setvalue(forKey:) Standardmethode ein.

var arrFname : NSArray! 

arrFname = ["abc","xyz","mno"] 

var arrLname : NSArray! 

arrFname = ["tuv","xuv","swift"] 

var dicSet : NSMutableDictionary! 

dicSet.setObject(arrFname, forKey : "Fname") 

dicSet.setObject(arrLname, forKey : "Lname") 

print(dicSet)           
-2
var tempDict = NSMutableDictionary() 

tempDict.setValue("sam", forKey : "one") 

print(tempDict["one"] ?? "1") 
+0

Möchten Sie erklären, warum das funktioniert? –