4

我正在寻找一种内置(或易于实现)的方法来让 Core Data 撤消/重做操作名称读起来像“撤消编辑名字”,而不是像他们那样简单地“撤消”或“重做”默认情况下。

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

最初的搜索让我找到了 2007 年 1 月在Apple 邮件列表上发布的相同问题。发布的唯一答案是“在 Core Data Programming Guide 中搜索'Model.strings'”。我的模型没有字符串文件,所以我创建了一个(在我的 en.lproj 目录中本地化并使用 UTF-16 编码),但这没有任何区别。

我遵循了 Apple教程中的说明(由于我的应用程序不是基于文档的,因此稍作修改)和Core Data 文档,但我的菜单标题仍然显示为“撤消”和“重做”。

4

1 回答 1

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)];
}
于 2011-04-23T09:40:38.497 回答