2013-07-26 12 views
5

Ich bin noch neu bei Core Data.Core Data speichert nur den letzten Artikel

Ich versuche, dreimal über ein Array zu loopen und bei jeder Schleife speichere ich die Indexnummer.

Aber es zeigt nur die letzte Indexnummer beim Abrufen der Ergebnisse. Es überschreibt alles, was zuvor eingefügt wurde.

Mein Code ist in der AppDelegate geschrieben.

Hier ist mein Code:

NSManagedObjectContext *context = [self managedObjectContext]; 
NSManagedObject *tagsDB = [NSEntityDescription insertNewObjectForEntityForName:@"Tags" inManagedObjectContext:context]; 

for (int i = 0 ; i < 3 ; i++) 
{ 
    [tagsDB setValue:i forKey:@"ID"]; 

} 

[self saveContext]; 

...

- (void)saveContext 
{ 
    NSError *error = nil; 
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext; 
    if (managedObjectContext != nil) { 
     if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { 
      // Replace this implementation with code to handle the error appropriately. 
      // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. 
      NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
      abort(); 
     } 
    } 
} 
+0

Wenn ich wieder erklären die NSManagedObject bei jeder Iteration, werden alle Daten gespeichert, aber ich bekomme immer eine zusätzliche Zeile von Nullwerten – firewall

Antwort

7

Sie müssen Ihre Entität für jeden Wert erstellen.

NSManagedObjectContext *context = [self managedObjectContext]; 

for (int i = 0 ; i < 3 ; i++) 
{ 
    NSManagedObject *tagsDB = [NSEntityDescription insertNewObjectForEntityForName:@"Tags" inManagedObjectContext:context]; 
    [tagsDB setValue:i forKey:@"ID"]; 

} 

[self saveContext]; 
+0

Wenn ich wieder erklären die NSManagedObject bei jeder Iteration, werden alle Daten gespeichert, aber Ich bekomme immer eine extra Reihe von Nullwerten – firewall

+0

Extra-Zeile erscheint, wenn Sie eine Abfrage auf Ihrer DB ausführen? –

+0

also ist es normal, diese zusätzliche Zeile zu haben? Kann ich es loswerden? – firewall

1

In Ihrem for-Schleife - der Code, der einfach den Wert des neu eingefügten Artikels ändert bekräftigt wird. Was Sie in der for-Schleife tun müssen, ist insertNewObjectForEntityForName, die eine neue, separate Entität für jede Iteration einfügen wird.