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

最佳答案

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

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


正在将nsManagedObject1的column1和column2更新为新值。

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

关于objective-c - 为什么我的数据没有保存在核心数据中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7514713/

10-16 00:47
查看更多