2013-05-20 14 views
5

Mam plist, chcę dodać elememts z tego plist do zmiennego słownika. Najpierw sprawdzam nazwę użytkownika w plist i moje obecne imię są takie same lub nie, jeśli to samo, to chcę dodać całą wartość do tego słownika ROM plist i również przypisać ten sam klucz?Jak dodać obiekt do NSMutableDictionary za pomocą klucza?

for(int i=0;i<[displayList count];i++) 
    { 
     if([[[data valueForKey:@"username"] objectAtIndex:i] isEqualToString:user]) 
     { 
      [finalBooks setValue:[[data valueForKey:@"ID"] objectAtIndex:i] forKey:@"ID"]; 
      [finalBooks setValue:[[data valueForKey:@"name"] objectAtIndex:i] forKey:@"name"]; 
      [finalBooks setValue:[[data valueForKey:@"Place"] objectAtIndex:i] forKey:@"Place"]; 
      [finalBooks setValue:[[data valueForKey:@"username"] objectAtIndex:i] forKey:@"username"]; 


     } 
    } 

[DisplayList count] wartość ta wynosi 7 więc każda wartość zastępując 6 razy, i dostaję tylko wartości ostatecznych chcę co wartości dopasowania do nazwy użytkownika i że mutabledictionary

+0

więc w czym problem? mam nadzieję, że "' finalBooks' jest twoim '' NSMutableDictionary' ", tak? –

+0

yes ale [displayList count] ta wartość wynosi 7, więc każda wartość zastępuje 6 razy, a otrzymuję tylko końcowe wartości –

+0

@mango dlatego, że ustawiasz (* zastępując *) wartości słownika na te same klucze w każdej iteracji, dlatego właśnie otrzymujesz tylko wartości końcowe. –

Odpowiedz

12

myślę, że należy stworzyć tablica słownika. Po prostu dodaj swój słownik finałowych książek do NSMutableArray, tak jak ten

Otrzymasz tablicę słownika. Powodzenia !!

+0

dziękuję bardzo –

+1

Nie powinieneś używać -objectForKey:/- setObject: forKey :? – Arcank

+0

jest finalBooks = finalArray ??? – anson

2

Metoda setValue w NSMutableDictionary zastępuje wartość, jeśli klucz jest taki sam. Możesz więc użyć NSMutableDictionary z tablic lub słowników.

NSMutableDictionary *userDictionary=[[NSMutableDictionary alloc]init]; 

(int i=0;i<[displayList count];i++) 
{ 
    if([[[data valueForKey:@"username"] objectAtIndex:i] isEqualToString:user]) 
    { 
     [finalBooks setValue:[[data valueForKey:@"ID"] objectAtIndex:i] forKey:@"ID"]; 
     [finalBooks setValue:[[data valueForKey:@"name"] objectAtIndex:i] forKey:@"name"]; 
     [finalBooks setValue:[[data valueForKey:@"Place"] objectAtIndex:i] forKey:@"Place"]; 
     [finalBooks setValue:[[data valueForKey:@"username"] objectAtIndex:i] forKey:@"username"]; 

     [userDictionary setObject:finalBooks forKey:user]; 
    } 
} 

Jeśli chcesz wszystko w jednym słowniku, proponuję użyć unikalny klucz taki jak NSString stringWithFormat:@"ID+%@",username],...[NSString stringWithFormat:@"username+%@",username]

Ale wygląda niechlujnie :)