我想在核心数据中向实体添加一些新的托管对象。这些托管对象也由类
表示每次都需要执行以下操作吗?
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Steps" inManagedObjectContext:self.managedObjectContext];
// Initialize Record
NSManagedObject *blankStep = [[NSManagedObject alloc] initWithEntity:entity insertIntoManagedObjectContext:self.managedObjectContext];
或者,如果我有这些对象的数组,我可以只向数组中添加一个新对象然后保存上下文吗?
NSMutableArray <Steps *> *theNewSteps = [NSMutableArray arrayWithCapacity:20];
Steps *blankStep = [[Steps* alloc] init];
[theNewSteps addObject: blankStep];
对这里发生的事感到困惑。
答案 0 :(得分:2)
每次都需要执行以下操作吗?
是,无论是那个还是:
NSManagedObject *blankStep = [NSEntityDescription insertNewObjectForEntityForName:@"Steps" inManagedObjectContext: self.managedObjectContext];
无论哪种方式实例化一个新对象并将其插入到托管对象上下文中。
或者,如果我有这些对象的数组,我可以只将新对象添加到数组中,然后保存上下文吗?
没有。核心数据不了解您的阵列,因此它不知道您是否更改了该阵列。另外,这一行:
Steps *blankStep = [[Steps alloc] init];
会失败,因为它会尝试创建一个新的Steps
实例,但不会为该类调用指定的初始值设定项。您无法将init
用于托管对象,您需要使用第一个代码段或我上面提到的版本。
答案 1 :(得分:-2)
要添加新的托管对象,请使用以下代码。
步骤*步骤= [NSEntityDescription insertNewObjectForEntityForName:@“Steps”inManagedObjectContext:[self managedObjectContext];
//现在你有了Steps对象,如果你想为你可以添加的对象添加值。
//现在保存moc
仍然有任何疑问,请告诉我。