核心数据自动撤销
Core Data automatic undo
抱歉,如果这个问题已经解决(一如既往),但我找不到明确的答案,所以...
大约 OS X 10.7(我知道的旧东西),我为 Mac 开发的核心数据应用程序具有“自动”撤消支持。这是一项核心数据功能。使用默认的“撤消”菜单可以简单地撤消对托管对象上下文的更改,无需任何自定义代码行。
这似乎不再适用于这个旧的 Xcode 项目。撤消菜单不执行任何操作并且显示为灰色(相同的应用程序,相同的代码)。
为了检查,我创建了最简单的代码数据应用程序项目(仍然是 Obj-C),是的,它不支持自动撤消。撤消菜单总是变灰,当我向 MOC 的撤消管理器发送 canUndo
消息时,它 returns NO
即使我对托管对象进行了更改。
自动撤消不再是核心数据功能了吗?我已经太老了吗? (您不必回答这个问题。)
谢谢。
很可能您的托管对象上下文的 undoManager
是 nil,这是默认值。 Core Data 无法自行撤消,但可以与撤消管理器一起使用。创建一个或传入一个已存在的 - 例如,NSDocument
有一个撤消管理器,而您的应用程序委托可能有一个。
感谢 Tom 的意见和答案,这是一个简单的修复 issue。
macOS 核心数据应用不再默认设置撤消管理器。他们以前曾经有过一个(如对上面链接问题的回复中所示)。
为了将撤消管理器添加到托管对象上下文,我刚刚将这些代码行添加到 AppDelegate.m
的 NSManagedObjectContext
方法中(就在 return
行之前):
NSUndoManager *undoManager = [[NSUndoManager alloc] init];
[_managedObjectContext setUndoManager:undoManager];
撤消再次起作用。
抱歉,如果这个问题已经解决(一如既往),但我找不到明确的答案,所以...
大约 OS X 10.7(我知道的旧东西),我为 Mac 开发的核心数据应用程序具有“自动”撤消支持。这是一项核心数据功能。使用默认的“撤消”菜单可以简单地撤消对托管对象上下文的更改,无需任何自定义代码行。
这似乎不再适用于这个旧的 Xcode 项目。撤消菜单不执行任何操作并且显示为灰色(相同的应用程序,相同的代码)。
为了检查,我创建了最简单的代码数据应用程序项目(仍然是 Obj-C),是的,它不支持自动撤消。撤消菜单总是变灰,当我向 MOC 的撤消管理器发送 canUndo
消息时,它 returns NO
即使我对托管对象进行了更改。
自动撤消不再是核心数据功能了吗?我已经太老了吗? (您不必回答这个问题。)
谢谢。
很可能您的托管对象上下文的 undoManager
是 nil,这是默认值。 Core Data 无法自行撤消,但可以与撤消管理器一起使用。创建一个或传入一个已存在的 - 例如,NSDocument
有一个撤消管理器,而您的应用程序委托可能有一个。
感谢 Tom 的意见和答案,这是一个简单的修复 issue。
macOS 核心数据应用不再默认设置撤消管理器。他们以前曾经有过一个(如对上面链接问题的回复中所示)。
为了将撤消管理器添加到托管对象上下文,我刚刚将这些代码行添加到 AppDelegate.m
的 NSManagedObjectContext
方法中(就在 return
行之前):
NSUndoManager *undoManager = [[NSUndoManager alloc] init];
[_managedObjectContext setUndoManager:undoManager];
撤消再次起作用。