【问题标题】:unable to edit tablecell in NSTableView无法在 NSTableView 中编辑表格单元
【发布时间】:2026-02-03 17:45:01
【问题描述】:

我有一个用 NSMutableDictionaries 填充的 NSMutableArray。所有这些数据都显示在 NSTableView 中。

问题是当我尝试编辑单元格时。我的 tableview 通过数据源绑定绑定到我的类。并编辑单元格的值,我使用以下代码:

 -(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{

NSMutableDictionary *i = [list objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
[i setValue:object forKey:identifier];

 }

但它抛出一个错误:

2013-02-11 20:50:35.960 prog[424:303] Exception detected while handling key input.
2013-02-11 20:50:35.960 prog[424:303] [<__NSDictionaryI 0x105986580>     setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key filename.
2013-02-11 20:50:35.964 prog[424:303] (

我不明白为什么我会收到这个NSDictionaryI 错误。我到处都在使用 NSMutableDictionary,即使我将字典添加到数组中。任何帮助表示赞赏。

【问题讨论】:

    标签: objective-c cocoa checkbox nstableview


    【解决方案1】:

    我认为

    setValue:forUndefinedKey
    

    表示您的 tableColumn 标识符有问题。检查 Interface Builder 中的设置标识符和/或设置断点(或仅执行 NSLog(@"%@", tableColumn.identifier);)

    【讨论】:

      【解决方案2】:

      我找到了问题!

      当我向数组添加元素时,我使用的是 COPY。删除它使它工作!

      [myNSMutableArray addObject: myNSMutableDictionary];

      在我使用之前

      [myNSMutableArray addObject:copy myNSMutableDictionary];

      【讨论】: