2011-09-22 65 views
0

我想使用下面的代碼將多行保存到我的coredata數據庫中。它只保存最後一行。爲什麼這樣做?爲什麼我的數據不能保存在覈心數據中?

nsManagedObject1.column1 = @"First row"; 
nsManagedObject1.column2 = @"Test 2"; 

//insert first row 
if (![context save:&error]) { 
    NSLog(@"Could not save the data: %@",[error localizedDescription]); 
} 

//insert second row 
nsManagedObject1.column1 = @"Second row"; 
nsManagedObject1.column2 = @"Test 2"; 

if (![context save:&error]) { 
    NSLog(@"Could not save the data: %@",[error localizedDescription]); 
} 

//see how many rows exist in the database 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"TestDB" inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 

NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; 
NSLog(@"Number of rows: %d",[fetchedObjects count]); 

在計數中,我只得到一行。當我在行中打印數據時,它只能找到我輸入數據庫的最後一行。爲什麼這樣做?由於我確實保存了上下文,因此我期待在數據庫中有兩行可用。請幫忙!我也沒有得到任何錯誤。

PS - 我知道我不應該這樣做,但我覺得我應該明白爲什麼所有的行都沒有保存。

+0

Xcode只是一個IDE。它不會保存和運行。 – vikingosegundo

回答

2

兩行有兩行需要兩個託管對象。所有你在這裏做的:

//insert second row 
nsManagedObject1.column1 = @"Second row"; 
nsManagedObject1.column2 = @"Test 2"; 

正在更新nsManagedObject1的column1和column2有新的值。

您需要創建一個nsManagedObject2,並且這將爲您提供數據庫中的兩行。

+0

太棒了!謝謝。我有一種感覺,我做錯了什麼。 – Gangadhar

+0

沒有probs!很高興你得到它:-) –