从自定义NSCell更新核心数据

时间:2011-03-17 14:38:15

标签: macos core-data cocoa-bindings nsarraycontroller nscell

我有一个自定义NSCell(实际上是子类NSTextFieldCell),它在独立编辑器和NSTableColumn中使用(通过NSArrayController绑定到核心数据)。当用户更改值时,我调用-[NSCell setObjectValue:]来更新值(它是NSNumber)。这在独立编辑器中有效,因为当它完成时我手动更新它上面的绑定。

[self setObjectValue:[NSNumber numberWithInt:newValue]];

当单元格位于NSTableView时,缺少该步骤(更新绑定字段) - 在用户编辑时(使用鼠标跟踪)显示更新后的值,但是一旦结束,值就会快照回到持久的价值。

NSTableColumn绑定到-[NSArrayController arrangedObjects]的键。是否存在某种我对“遗嘱”或“updateBinding”的调用?我在NSCellNSTableView的文档中找不到任何有用的功能。

1 个答案:

答案 0 :(得分:1)

为了解决这个问题,我在-tableView:setObjectValue:forTableColumn:row:子类中实现了NSArrayController。我从Row参数中获取了我的NSManagedObject子类的实例,然后从ObjectValue参数手动分配新模型。当文本单元格自动执行此操作时,我仍然不知道为什么这是必要的,但它可以正常工作。