撤消核心数据更改的操作名称

发布于 2024-11-01 18:37:49 字数 915 浏览 3 评论 0原文

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

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

初步搜索使我发现了 Apple 邮件列表 于 2007 年 1 月发布。唯一发布的答案是“在核心数据编程指南中搜索‘Model.strings’。”我的模型没有字符串文件,所以我创建了一个(在我的 en.lproj 目录中本地化并使用 UTF-16 编码),但这没有什么区别。

我按照苹果的 教程(略有调整,因为我的应用程序不是基于文档的),以及 核心数据文档,但我的菜单标题仍然是“撤消”和“重做”。

I'm looking for a built-in (or easy-to-implement) way to get Core Data undo/redo action names to read like "Undo edit First Name", rather than simply "Undo" or "Redo" as they do by default.

I have a Core Data application, and am using its NSUndoManager as my window's undo manager. It works great, but when a user makes a change to a field (inline from an NSTableView), the Undo menu item's title doesn't reflect which field changed.

Initial searching led me to the same question posted on Apple Mailing Lists in January 2007. The only answer ever posted responds with "Search for 'Model.strings' in the Core Data Programming Guide." I didn't have a Strings file for my Model, so I created one (localized in my en.lproj directory and with UTF-16 encoding), but this made no difference.

I followed instructions from Apple's tutorial (adapted slightly since my app is not Document-based), and the Core Data documentation, but my menu titles still read "Undo" and "Redo".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小…红帽 2024-11-08 18:37:49

在您的 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)];
}

In your NSManagedObject subclass 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)];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文