Core Data+Objective-C:如何创建多个NSManagedObject实体记录?
Core Data 中 NSManagedObject 的使用疑问解答
单个
NSManagedObject实例只能对应一条实体记录,它本质就是数据库里的一行数据,没法在一个实例里存储多条记录,也不能直接把它当作记录数组来用。复用同一个实例修改属性再保存,只会覆盖这条记录的原有数据,不会新增。要创建多条记录,每次都需要生成新的
NSManagedObject实例,而不是复用同一个对象。具体做法是调用NSEntityDescription的insertNewObjectForEntityForName:inManagedObjectContext:方法,每次调用都会在上下文里创建一个新的实例,对应数据库里的一条新记录。如果需要用户提供唯一标识来区分记录,可以给
MyEntity新增一个uniqueId属性(比如设为NSString类型),创建实例时把用户输入的标识赋值给这个属性,确保每条记录唯一。
以下是Objective-C代码示例:
// 假设已经获取到NSManagedObjectContext实例 NSManagedObjectContext *context = ...; // 创建第一条记录 MyEntity *entityObj1 = [NSEntityDescription insertNewObjectForEntityForName:@"MyEntity" inManagedObjectContext:context]; entityObj1.name = @"Alice"; entityObj1.city = @"New York"; entityObj1.country = @"USA"; entityObj1.uniqueId = @"user_input_id_1"; // 用户提供的唯一标识 // 创建第二条记录 MyEntity *entityObj2 = [NSEntityDescription insertNewObjectForEntityForName:@"MyEntity" inManagedObjectContext:context]; entityObj2.name = @"Bob"; entityObj2.city = @"London"; entityObj2.country = @"UK"; entityObj2.uniqueId = @"user_input_id_2"; // 用户提供的唯一标识 // 保存上下文,持久化到数据库 NSError *saveError = nil; if (![context save:&saveError]) { NSLog(@"保存记录失败: %@", saveError.localizedDescription); }
内容的提问来源于stack exchange,提问作者Michael Guy Lee
相关产品推荐
相关产品推荐

