2016-04-27 7 views
0

Ich habe eine NSDictionary, die im, Iterieren und Im die Daten zu Kern Daten zu speichern, wie folgtden Auftrag pflegen, während ein NSDictionary Iterieren

NSDictionary *details = [valueDict objectForKey:@"shipment_master"]; 

      for (NSDictionary *response in details) { 
       NSManagedObjectContext *context = [self managedObjectContext]; 

       // remove all rows 

       [context performBlockAndWait:^{ 
        // add new row(s) 
        NSManagedObject *master = [NSEntityDescription insertNewObjectForEntityForName:@"ShipmentMaster" inManagedObjectContext:context]; 
        NSError *error; 

        [master setValue:[details objectForKey:response] forKey:@"values"]; 

        // save MOC 
        if ([context hasChanges]) { 
         (void)[context save:&error]; 
        } 
       }]; 
      } 

Das Problem ist, dass die Reihenfolge, während der NSDictionary Looping geändert wird. Zum Beispiel kommt a nach a b dann c, d etc im Wörterbuch, aber wenn ich es wiederhole und es speichere, wird die Reihenfolge geändert. Wie kann ich die Reihenfolge beibehalten?

+3

gibt es keine Reihenfolge im Wörterbuch ... Sie brauchen Array von Tupeln –

+0

Können Sie es bitte mit Bezug auf meinen Code erklären? Danke –

+2

Mögliches Duplikat von [NSDictionary mit geordneten Schlüsseln] (http://stackoverflow.com/questions/376090/nsdictionary-with-ordered-keys) –

Antwort

2

NSMutableDictionary ist nicht bestellt. Es gibt nichts, was Sie tun können, um die Reihenfolge der Schlüssel zu gewährleisten, da NSDictionary nicht versucht, eine bestimmte Reihenfolge beizubehalten. Um ein Wörterbuch in einer bestimmten Reihenfolge zu durchlaufen, müssen Sie eine NSArray der Schlüssel in der gewünschten Reihenfolge erstellen, dann iterieren und die entsprechenden Werte abrufen.

2

NSDictionary ist eine ungeordnete Sammlung. Zu sagen "die Reihenfolge, in der ich sie hinzugefügt habe" hat keine Bedeutung. Wenn Sie auf die Schlüssel in einer bestimmten Reihenfolge zugreifen möchten, müssen Sie entweder ein Array neben Ihrem Wörterbuch speichern oder die Schlüssel abrufen und sie dann sortieren und verwenden, um auf die Werte in dieser Reihenfolge zuzugreifen.

1

Es gibt keine Reihenfolge in NSMutableDictionary Wenn Sie es verwenden möchten, können Sie es verwenden, indem Sie Schlüssel in einem NSArray speichern, iterieren Sie es dann und holen Sie seine relevanten Werte, die Sie verwenden möchten. Hoffe, es funktioniert für Sie :)