gpt4 book ai didi

ios - 核心数据和撤消组

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:12 25 4
gpt4 key购买 nike

我是第一次使用 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 语句的帮助下,我知道这是事件的顺序:

  • 在 Root View 中启动应用
  • 进入 ListView
    开始
  • 离开 ListView
    结束/保存
  • 进入项目详情 View
  • 进入类别详情 View
    开始
  • 触摸“添加类别”按钮,这会将我们带到另一个 View
    开始
  • 输入新数据
  • 触摸完成按钮
    结束/保存
  • 触摸返回以返回项目详细信息 View
  • 触摸取消按钮
    取消
  • 返回 ListView
    开始

此时我的新类别不见了,我不明白为什么。它被包裹在一个组中,结束并保存。难道它不应该在那个时候被回滚吗?我原以为取消只会影响项目详细信息 View 中所做的任何更改。如果它现在的行为方式是正确的,那么我该如何让它按照我期望的方式行事?

如有任何澄清,我们将不胜感激!

最佳答案

答案原来是您需要为内部组使用第二个托管对象上下文。

关于ios - 核心数据和撤消组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com