Cocoa 绑定到NSTextField单元格不起作用,编辑的值重置为默认值

Cocoa 绑定到NSTextField单元格不起作用,编辑的值重置为默认值,cocoa,cocoa-bindings,nstablecolumn,nstableviewcell,Cocoa,Cocoa Bindings,Nstablecolumn,Nstableviewcell,我正在开发一个核心数据文档应用程序,它可以动态创建NSTableColumns。数据单元格类型可以是复选框、滑块等。以编程方式绑定到所有单元格类型都有效,除了NSTextFieldCell 所有NSTextFieldCells绑定失败,编辑后返回默认值。无论它们绑定到字符串、数字(应用了NSNumberFormatter或日期(NSDateFormatter应用),都会发生这种情况。我使用以下格式进行所有绑定: NSDictionary *textFieldOpts = [NSDictionar

我正在开发一个核心数据文档应用程序,它可以动态创建
NSTableColumns
。数据单元格类型可以是复选框、滑块等。以编程方式绑定到所有单元格类型都有效,除了
NSTextFieldCell

所有
NSTextFieldCells
绑定失败,编辑后返回默认值。无论它们绑定到字符串、数字(应用了
NSNumberFormatter
或日期(
NSDateFormatter
应用),都会发生这种情况。我使用以下格式进行所有绑定:

NSDictionary *textFieldOpts = [NSDictionary dictionaryWithObjectsAndKeys:@"YES", NSContinuouslyUpdatesValueBindingOption, @"YES", NSValidatesImmediatelyBindingOption, nil];
[aCell bind:@"value" toObject:[[entryAC arrangedObjects] objectAtIndex:0] withKeyPath:@"numberData" options:textFieldOpts];
同样,如果单元格类型不是
NSTextFieldCell
,这些语句也可以工作


我加入了一个
-observeValueForKeyPath
方法来记录值更改时的日志。。。对于其他单元格类型(
NSSliderCell
),我可以看到值发生了变化,但是使用
NSTextFieldCell
,它永远不会更新。

结果表明,我需要实现NSTableView数据源方法setObjectValue来手动从NSTableView(视图)获取变化然后在阵列控制器(模型)中手动设置数据,类似下面的代码:

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    [[[entryAC arrangedObjects] objectAtIndex:rowIndex] setValue:(NSNumber *)anObject forKey:@"numberData"];
}
出于某种原因,当以编程方式逐个单元设置到NSTEXTFIELDCELL的绑定时,其工作方式只有一种:仅显示数据。我个人认为这是一个错误