2014-11-20 9 views
23

Próbuję dodać wiele obiektów do NSDictionary, jakSwift: Dodawanie wielu <key, value> obiektów NSDictionary

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

Czy to w ogóle możliwe, aby to zrobić? Jeśli nie, zaproponuj lepszy sposób. Naprawdę muszę przekonwertować ten NSDictionary na ciąg JSON i wysłać go na serwer, więc potrzebuję wielu obiektów w NSDictionary.

+2

Czy to próbował? jednak wygląda to jak tablica słowników – Antonio

+0

Cóż, twoim głównym obiektem jest tablica, a nie słownik, więc jest to ... – Fogmeister

Odpowiedz

42

Z pewnością można utworzyć słownik słowników. Jednak trzeba inną składnię, że:

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

wygląda Co masz jak tablicy słowników, choć:

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

Aby uzyskać JSON, który wygląda tak

{"Data": [{"User": myDict1}, {"User": myDict1},...]} 

Musisz dodać powyższą tablicę do słownika, na przykład:

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

Jeśli używam tablicy słowników, to czy można ją przekonwertować na ciąg JSON? I wyciągnąć dane po stronie serwera? –

+0

@SrujanSimha Jestem prawie pewien, że konwersja do JSON powinna przebiegać bez problemu dla dowolnej kombinacji standardowych typów kolekcji. Jeśli chodzi o stronę serwera, należy spojrzeć na format obsługiwany przez serwer. Aby to przetestować, zamień tablicę słowników na ciąg JSON i napisz w dzienniku. Sprawdź, czy ciąg znaków wygląda dokładnie to, czego oczekuje twój serwer, i dostosuj go, jeśli to konieczne. – dasblinkenlight

+0

Ok. Powiedzmy, że mam słownik 'myDict1 = [" name ":" abc "," status ": 1]' i jest wiele osób, stworzyłem myDict1 dla każdej osoby i dodałem to do innego słownika, np .. 'myDict2 = [ "Użytkownik": myDict1] '. Czy mogę mieć wiele wartości dla tego samego klucza? Podobnie jak JSON: '{" Dane ": [{" Użytkownik ": myDict1}, {" Użytkownik ": myDict1}, ...]}' –

0

SWIFT 3,0

  • przedmiot

Frist wszystkim można utworzyć NSArray i możesz ustawić tablicę w NSMutableDictionary użyciu setvalue(forKey:) domyślną metodę.

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

Chcesz wyjaśnić, dlaczego to działa? –

Powiązane problemy