2013-05-20 12 views
5

Ich habe plist, ich will die Elememts von diesem plist zu einem veränderlichen Wörterbuch hinzufügen. Zuerst überprüfe ich den Benutzernamen in plist und mein gegenwärtiger Name ist gleich oder nicht, wenn sein selbe dann möchte ich allen Wert zu diesem Wörterbuch rom plist addieren und auch den gleichen Schlüssel zuweisen?Wie füge ich Objekt zu NSMutableDictionary mit Schlüssel hinzu?

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] dieser Wert 7, so dass jeder Wert zu ersetzen 6-mal, und bin immer nur Endwerte ich möchte passend alle Werte Benutzernamen i, dass mutabledictionary

+0

so etwas ist das Problem hier? hoffentlich "' finalBooks' "ist dein" NSMutableDictionary' ", ja? –

+0

ja, aber [displayList count] dieser Wert ist 7, also jeder Wert ersetzt 6 mal, und bekomme nur endgültige Werte –

+0

@mango das ist, weil Sie (* ersetzen *) Werte des Wörterbuchs gegen gleiche Schlüssel in jeder Iteration, deshalb Sie erhalten nur endgültige Werte. –

Antwort

12

Ich denke, Sie sollten erstellen Array von Wörterbuch. Fügen Sie einfach Ihre finalBooks Wörterbuch zu NSMutableArray wie diese

NSMutableArray *finalArray = [[NSMutableArray 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"]; 

     [finalArray addObject:finalBooks]; 
    } 
} 

Und Sie werden Array von Wörterbuch erhalten. Viel Glück !!

+0

vielen Dank –

+1

Sollten Sie nicht verwenden -ObjectForKey:/- setObject: forKey :? – Arcank

+0

ist finalBooks = finalArray ??? – anson

2

setValue-Methode in einem NSMutableDictionary ersetzt den Wert, wenn der Schlüssel gleich ist. Sie können also NSMutableDictionary von Arrays oder Dictionaries verwenden.

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]; 
    } 
} 

Wenn Sie alles in einem Wörterbuch wollen, empfehle ich Sie, wie NSString stringWithFormat:@"ID+%@",username],...[NSString stringWithFormat:@"username+%@",username]

einen eindeutigen Schlüssel verwenden, aber es sieht chaotisch :)

Verwandte Themen