我是第一次使用Core Data,这让我很困惑。
我有以下方法可以将更改分组并保存:
- (void)beginUndoGrouping:(NSManagedObjectContext *)managedObjectContext {
NSLog(@"begin");
[managedObjectContext processPendingChanges];
[managedObjectContext.undoManager beginUndoGrouping];
}
- (void)endUndoGroupingAndSaveContext:(NSManagedObjectContext *)managedObjectContext
{
NSLog(@"end/save");
[managedObjectContext processPendingChanges];
[managedObjectContext.undoManager endUndoGrouping];
[self saveContext:managedObjectContext];
}
- (void)cancelUndoGrouping:(NSManagedObjectContext *)managedObjectContext {
NSLog(@"cancel");
[managedObjectContext processPendingChanges];
[managedObjectContext.undoManager endUndoGrouping];
[managedObjectContext.undoManager undoNestedGroup];
}
在NSLog语句的帮助下,我知道这是事件的顺序:
开始
结束/保存
开始
开始
结束/保存
取消
开始
至此,我的新类别消失了,我不明白为什么。将其包装成一个组,然后将其保存。难道不应该在那个时候回滚吗?我希望取消只会影响在项目详细信息视图中所做的任何更改。如果现在的行为方式是正确的,那么我如何使其表现出预期的效果?
任何澄清将不胜感激!
最佳答案
答案是,您需要为内部组使用第二个托管对象上下文。