撤消Core Data更改的操作名称

时间:2011-04-17 20:43:22

标签: objective-c cocoa macos core-data nsundomanager

我正在寻找一种内置(或易于实现)的方式来将Core Data撤消/重做动作名称读取为“撤消编辑名字”,而不是简单地“撤消”或“重做”正如他们默认做的那样。

我有一个Core Data应用程序,并使用其NSUndoManager作为我的窗口的撤消管理器。它工作得很好,但是当用户对字段进行更改(从NSTableView内联)时,撤消菜单项的标题不会反映哪个字段已更改。

初步搜索引发了我在2007年1月发布在Apple Mailing Lists上的同一问题。唯一的答案是在核心数据编程指南中用“搜索'Model.strings'回复。”我的模型没有Strings文件,因此我创建了一个(本地化在我的en.lproj目录中并使用UTF-16编码),但这没有任何区别。

我按照Apple的tutorial(略有改编,因为我的应用不是基于文档)和Core Data documentation的说明,但我的菜单标题仍然是“撤消”和“重做”。

1 个答案:

答案 0 :(得分:1)

在NSManagedObject子类中添加

-(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)];
}