为什么我的数据不会保存在Core Data中?

时间:2011-09-22 12:27:50

标签: objective-c cocoa core-data

我正在尝试使用以下代码将多行保存到我的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 - 我知道我不应该这样做,但我觉得我应该理解为什么所有的行都没有被保存。

1 个答案:

答案 0 :(得分:2)

两个有两行你需要两个托管对象。你在这里所做的一切:

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

正在更新nsManagedObject1的column1和column2以获得新值。

您需要创建一个nsManagedObject2,这将在数据库中为您提供两行。