2013-07-26 63 views
5

我還是Core Data的新手。核心數據僅保存最後一項

我想循環三次數組和每個循環,我保存索引號。

但是它只顯示獲取結果時的最後一個索引號。它覆蓋了之前插入的所有內容。

我的代碼寫在AppDelegate中。

這裏是我的代碼:

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

在每次迭代當我重新聲明NSManagedObject,所有的數據被保存,但我總是空的一個額外的行值 – firewall

回答

7

您必須爲每個值創建實體。

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

在每次迭代當我重新聲明NSManagedObject,所有的數據被保存,但我總是會得到一行額外的空值 – firewall

+0

當您在數據庫上執行查詢時會出現額外的行嗎? –

+0

所以有這額外的行是正常的?我可以擺脫它嗎? – firewall

1

在你的for循環 - 這被重申只是改變了新插入的項目的值的代碼。您需要在for循環中執行的操作是insertNewObjectForEntityForName,它將爲每次迭代插入一個新的獨立實體。