我正在寻找一种内置(或易于实现)的方式来将Core Data撤消/重做动作名称读取为“撤消编辑名字”,而不是简单地“撤消”或“重做”正如他们默认做的那样。
我有一个Core Data应用程序,并使用其NSUndoManager
作为我的窗口的撤消管理器。它工作得很好,但是当用户对字段进行更改(从NSTableView
内联)时,撤消菜单项的标题不会反映哪个字段已更改。
初步搜索引发了我在2007年1月发布在Apple Mailing Lists上的同一问题。唯一的答案是在核心数据编程指南中用“搜索'Model.strings'回复。”我的模型没有Strings文件,因此我创建了一个(本地化在我的en.lproj目录中并使用UTF-16编码),但这没有任何区别。
我按照Apple的tutorial(略有改编,因为我的应用不是基于文档)和Core Data documentation的说明,但我的菜单标题仍然是“撤消”和“重做”。
答案 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)];
}