我是第一次使用 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 语句的帮助下,我知道这是事件的顺序:
- 在根视图中启动应用程序
- 进入列表视图
开始 - 离开列表视图
结束/保存 - 进入项目详情视图
- 进入类别详情视图
开始 - 触摸添加类别按钮,这会将我们带到另一个视图
开始 - 输入新数据
- 触摸完成按钮
结束/保存 - 触摸返回以返回项目详细信息视图
- 触摸取消按钮
取消 - 返回列表视图
开始
此时我的新类别消失了,我不明白为什么。它被包裹在一个组中,该组被结束并保存。那时它不应该不会被回滚吗?我原以为取消只会影响在项目详细信息视图中所做的任何更改。如果它现在的行为方式是正确的,那么我如何让它表现出我所期望的方式呢?
任何澄清将不胜感激!