objective-c - 为什么我的数据没有保存在 Core Data 中?

标签 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 - 我知道我不应该这样做,但我觉得我应该理解为什么所有行都没有被保存。

最佳答案

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

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

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

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

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

相关文章:

iphone - 从 UITextField 添加一个对象到 NSMutableArray

Cocoa:iTunes 和 XCode 4 风格 LCD 显示屏

ios - 轻量级迁移复制属性内容

swift - 通过将新项目保存到具有继承性的过滤提取请求,CoreData 出错

iphone - 如何使用NSScanner解析.ics文件

ios - 如何修改文本字段数组中选定的 UITexFiled 值

ios - 在 NSMutableArray Parse iOS 中删除 currentUser

ios将项目转换为arc

multithreading - NSIndexPath 线程安全吗?

objective-c - 如何使用核心数据进行依赖注入(inject)