2012-08-27 15 views
9

Mam pętlę for, która przechodzi przez szereg słowników w tablicy.Dodaj do wpisów NSDictionary do NSMutableDictionary

W jaki sposób mogę skonsolidować wszystkie pozycje słowników w pętli for w jeden NSMutableDictionary?

Próbowałem addEntriesFromDictionary, ale nie działa. Dzięki za pomoc.

for (int i=0; i<sections.count; i++){ 

    formElements = [[sections objectAtIndex:i]objectForKey:@"Dictionary"];   
} 
+0

Co chcesz być kluczem? Może nie rozumiem cię. –

Odpowiedz

10
NSMutableDictionary * mutableDict = [NSMutableDictionary dictionary]; 

for (NSDictionary * formElements in sections) 
{ 
    [mutableDict addEntriesFromDictionary:formElements]; 
} 

Powinno działać, jeśli to prawda, że ​​nie udostępniają żadnych kluczy.

+0

OK, świetnie. Wypróbuję to i dam ci znać – user984248

12

można dodać obiekt słownika, jak poniżej.

NSMutableDictionary *mDict=[NSMutableDictionary dictionary]; 
    [mDict addEntriesFromDictionary:DictObj]; 
+0

To, co się teraz dzieje, jest za każdym razem, gdy przechodzę przez pętlę, ostatni słownik zastępuje poprzedni zamiast dodawać do niego. Mam więc 5 wpisów w pierwszym słowniku i 2 wpisy w drugim słowniku. Ostatecznie chcę je połączyć, aby uzyskać 7 wpisów. – user984248

+0

@ user984248 Tak, ponieważ klucze zastępują się nawzajem. Powinieneś prawdopodobnie użyć do tego tablicy i po prostu zrobić [array addObject: formElements] –

+0

Czy mogę to zrobić i mieć słownik jako ostateczny wynik? Mam cały mój kod skonfigurowany do odczytu wpisów ze słownika. – user984248

0

Możesz wymieniać swoje słowniki za pomocą -objectEnumerator lub innych methodfs NSDictionary.

Wewnątrz pętli wyliczasz słownik i dodajesz wszystkie obiekty do jednego dużego słownika.

+0

Czy możesz podać przykład? To jest to, czego szukam ... jeden duży słownik na końcu. – user984248

+0

Tak, mogę jednak, rozwiązanie Pandey_Laxman jest lepsze. Całkowicie zapomniałem o tej metodzie. Jeśli nadal chcesz mieć przykład, mogę go podać, ale myślę, że problem występuje w duplikatach kluczy, jak powiedział MrAzulay. Moje rozwiązanie nie pomoże ci w tym. – Engeor

+0

Rozumiem. Mają różne klucze. Pozwól mi zobaczyć, co mogę zrobić z Array – user984248

1
NSMutableDictionary *mDict=[[NSMutableDictionary alloc]init]; 
    NSMutableDictionary *mDict2=[[NSMutableDictionary alloc]init]; 

//later suppose you have 5 object in mDict and 2 object in mDict2. combine in this Way. 
    NSMutableArray *keys=[[NSMutableArray alloc]init]; 
    NSMutableArray *obj=[[NSMutableArray alloc]init]; 

    keys=[[mDict allKeys] mutableCopy]; 
    obj=[[mDict allValues] mutableCopy]; 

    [keys addObjectsFromArray:[mDict2 allKeys]]; 
    [obj addObjectsFromArray:[mDict2 allValues]]; 

    NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithObjects:obj forKeys:keys]; 
Powiązane problemy