Objective c 使用NSManagedObject';是否要删除自己的上下文属性?
这可能有点幼稚,但我想知道使用以下语句从核心数据的持久存储中删除托管对象是否正确:Objective c 使用NSManagedObject';是否要删除自己的上下文属性?,objective-c,nsmanagedobject,Objective C,Nsmanagedobject,这可能有点幼稚,但我想知道使用以下语句从核心数据的持久存储中删除托管对象是否正确: [managedObject.managedObjectContext deleteObject:managedObject]; 我在Xcode调试器中运行了上面的代码-它没有抱怨,但对象的内容仍然存在。是否上下文是通过要删除的对象引用的,从而导致内存锁阻止删除对象?关于内容的持久化,删除对象后仍需要在上下文上调用save: 我无法通过引用managedObject中的managedObjectContext明
[managedObject.managedObjectContext deleteObject:managedObject];
我在Xcode调试器中运行了上面的代码-它没有抱怨,但对象的内容仍然存在。是否上下文是通过要删除的对象引用的,从而导致内存锁阻止删除对象?关于内容的持久化,删除对象后仍需要在上下文上调用save: 我无法通过引用managedObject中的managedObjectContext明确回答您是否会遇到问题,因为我通常使用“DataManager”来管理managedObjectContext。下面是我在一个DataManager中使用的删除方法的示例:
- (void)deleteReport:(Report*)aReport inContext:(NSManagedObjectContext*)context {
if (aReport != nil) {
if (context == nil) {
context = self.managedObjectContext;
}
context.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy;
[context deleteObject:aReport];
NSError *error = nil;
[context save:&error];
if (error) {
//NSLog(@"%@", error);
}
}}
编辑:为了澄清,此方法中的报表是NSManagedObject的实例,该方法将NSManagedObjectContext作为参数,因为从中提取报表的应用程序支持使用多个上下文。Ok,如果使用对象自己的NSManagedObjectContext属性删除它是合法的,为什么不定义没有任何参数的“deleteObject”方法并使用对象的context属性?此外,我无法想象在一个上下文中定义NSManagedObject,但希望从另一个上下文中删除它的情况—有人能给我举个例子吗?