Objective c 撤消核心数据更改的操作名称
我正在寻找一种内置(或易于实现)的方法,以使核心数据撤消/重做操作名称读起来像“撤消编辑名字”,而不是像默认情况下那样简单地“撤消”或“重做” 我有一个核心数据应用程序,正在使用它的Objective c 撤消核心数据更改的操作名称,objective-c,cocoa,macos,core-data,nsundomanager,Objective C,Cocoa,Macos,Core Data,Nsundomanager,我正在寻找一种内置(或易于实现)的方法,以使核心数据撤消/重做操作名称读起来像“撤消编辑名字”,而不是像默认情况下那样简单地“撤消”或“重做” 我有一个核心数据应用程序,正在使用它的NSUndoManager作为我窗口的撤消管理器。它工作得很好,但是当用户更改字段时(从NSTableView内联),撤消菜单项的标题并不反映更改的字段 最初的搜索让我想到了2007年1月发布的同一个问题。唯一的答案是“在核心数据编程指南中搜索‘Model.strings’”。我的模型没有strings文件,所以我创
NSUndoManager
作为我窗口的撤消管理器。它工作得很好,但是当用户更改字段时(从NSTableView
内联),撤消菜单项的标题并不反映更改的字段
最初的搜索让我想到了2007年1月发布的同一个问题。唯一的答案是“在核心数据编程指南中搜索‘Model.strings’”。我的模型没有strings文件,所以我创建了一个(在我的en.lproj目录中本地化并使用UTF-16编码),但这没有什么区别
我遵循了苹果的指示(由于我的应用程序不是基于文档的,所以稍作修改),和,但我的菜单标题仍然是“撤消”和“重做”。在你的NSManagedObject子类add中
-(void)setValue:(id)value forKey:(NSString *)key
{
NSUndoManager * aUM = [[self managedObjectContext] undoManager];
[super setValue:value forKey:key];
if ([aUM isUndoRegistrationEnabled])
[aUM setActionName:NSLocalizedString(key,nil)];
}
但是,示例中的
NSLocalizedString
调用将不起作用,因为它不会查找Model.strings文件。您将如何在运行时查找字段的本地化名称?我将上述内容作为一个单独的问题发布:我还相应地修改了您的if
语句:if([aUM isundorgistrationEnabled]&&&&![aUM isUndoing]&&![aUM isRedoing])
以避免每次执行撤消或重做时重复条目。