Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 撤消核心数据更改的操作名称_Objective C_Cocoa_Macos_Core Data_Nsundomanager - Fatal编程技术网

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])
以避免每次执行撤消或重做时重复条目。