Cocoa 如何重新绑定NSTableColumn的NSValueBinding?

Cocoa 如何重新绑定NSTableColumn的NSValueBinding?,cocoa,nstableview,cocoa-bindings,nsarraycontroller,Cocoa,Nstableview,Cocoa Bindings,Nsarraycontroller,我正在构建一个Mac OS X应用程序,它有一个带有单个NSTableColumn的NSTableView和一个NSSegmentedControl。当我选择不同的段时,我打算切换表视图以显示来自不同阵列控制器的行 表列最初绑定到IB中的键路径arrangedObjects.name的self.songsArrayController。当所选段发生如下更改时,我当前正在重新绑定表列的值绑定: - (IBAction) segmentedControlChanged:(NSSegmentedCon

我正在构建一个Mac OS X应用程序,它有一个带有单个NSTableColumn的NSTableView和一个NSSegmentedControl。当我选择不同的段时,我打算切换表视图以显示来自不同阵列控制器的行

表列最初绑定到IB中的键路径
arrangedObjects.name
的self.songsArrayController。当所选段发生如下更改时,我当前正在重新绑定表列的值绑定:

- (IBAction) segmentedControlChanged:(NSSegmentedControl*) sender {
    if (sender.selectedSegment == 0) {
        [self.songNameTableColumn bind:NSValueBinding toObject:self.songsArrayController withKeyPath:@"arrangedObjects.name" options:nil];
    } else if (sender.selectedSegment == 1) {
        [self.songNameTableColumn bind:NSValueBinding toObject:self.productsArrayController withKeyPath:@"arrangedObjects.localizedTitle" options:nil];
    }
}
单击第二段时,我看到以下错误:

2013-08-16 08:55:26.245 MyApp[76005:303] [<SKProduct 0x10b3264d0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.
2013-08-16 08:55:26.270 MyApp[76005:303] (
    0   CoreFoundation                      0x00007fff96d69b06 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff8c7ea3f0 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff96dfdf49 -[NSException raise] + 9
    3   Foundation                          0x00007fff977ac15c -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 238
    4   Foundation                          0x00007fff976f3ea9 -[NSObject(NSKeyValueCoding) valueForKey:] + 400
    5   Foundation                          0x00007fff9771474c -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 341
    6   Foundation                          0x00007fff97714713 -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 284
    7   AppKit                              0x00007fff8dbf70a4 -[NSBinder valueForBinding:resolveMarkersToPlaceholders:] + 163
    8   AppKit                              0x00007fff8dbf99f7 -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 667
    9   AppKit                              0x00007fff8dbf964c -[NSValueBinder _observeValueForKeyPath:ofObject:context:] + 192
    10  AppKit                              0x00007fff8dbfe0ab -[NSTextValueBinder _observeValueForKeyPath:ofObject:context:] + 43
    11  Foundation                          0x00007fff977167b7 NSKeyValueNotifyObserver + 390
    12  Foundation                          0x00007fff977181c1 NSKeyValueDidChange + 456
    13  Foundation                          0x00007fff976d376a -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 118
    14  AppKit                              0x00007fff8dc3bae6 -[NSTableRowData _addViewToRowView:atColumn:row:] + 696
    15  AppKit                              0x00007fff8dc3b63f -[NSTableRowData _addViewsToRowView:atRow:] + 151
    16  AppKit                              0x00007fff8dc39bd5 -[NSTableRowData _addRowViewForVisibleRow:withPriorView:] + 415
    17  AppKit                              0x00007fff8dc3995a -[NSTableRowData _addRowViewForVisibleRow:withPriorRowIndex:inDictionary:withRowAnimation:] + 272
    18  AppKit                              0x00007fff8dc38c29 -[NSTableRowData _unsafeUpdateVisibleRowEntries] + 740
    19  AppKit                              0x00007fff8dc387c1 -[NSTableRowData updateVisibleRowViews] + 119
    20  AppKit                              0x00007fff8dc105a7 -[NSTableView layout] + 165
    21  AppKit                              0x00007fff8dbc3e65 -[NSView _layoutSubtreeHeedingRecursionGuard:] + 112
    22  CoreFoundation                      0x00007fff96d624a6 __NSArrayEnumerate + 582
    23  AppKit                              0x00007fff8dbc3fc6 -[NSView _layoutSubtreeHeedingRecursionGuard:] + 465
    24  CoreFoundation                      0x00007fff96d624a6 __NSArrayEnumerate + 582
    25  AppKit                              0x00007fff8dbc3fc6 -[NSView _layoutSubtreeHeedingRecursionGuard:] + 465
    26  CoreFoundation                      0x00007fff96d624a6 __NSArrayEnumerate + 582
    27  AppKit                              0x00007fff8dbc3fc6 -[NSView _layoutSubtreeHeedingRecursionGuard:] + 465
    28  CoreFoundation                      0x00007fff96d624a6 __NSArrayEnumerate + 582
    29  AppKit                              0x00007fff8dbc3fc6 -[NSView _layoutSubtreeHeedingRecursionGuard:] + 465
    30  CoreFoundation                      0x00007fff96d624a6 __NSArrayEnumerate + 582
    31  AppKit                              0x00007fff8dbc3fc6 -[NSView _layoutSubtreeHeedingRecursionGuard:] + 465
    32  CoreFoundation                      0x00007fff96d624a6 __NSArrayEnumerate + 582
    33  AppKit                              0x00007fff8dbc3fc6 -[NSView _layoutSubtreeHeedingRecursionGuard:] + 465
    34  CoreFoundation                      0x00007fff96d624a6 __NSArrayEnumerate + 582
    35  AppKit                              0x00007fff8dbc3fc6 -[NSView _layoutSubtreeHeedingRecursionGuard:] + 465
    36  AppKit                              0x00007fff8dbc3cfe -[NSView layoutSubtreeIfNeeded] + 615
    37  AppKit                              0x00007fff8dbbf4ac -[NSWindow(NSConstraintBasedLayout) layoutIfNeeded] + 201
    38  AppKit                              0x00007fff8dab90a8 _handleWindowNeedsDisplayOrLayoutOrUpdateConstraints + 446
    39  Foundation                          0x00007fff976fe463 __NSFireTimer + 96
    40  CoreFoundation                      0x00007fff96d26804 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    41  CoreFoundation                      0x00007fff96d2631d __CFRunLoopDoTimer + 557
    42  CoreFoundation                      0x00007fff96d0bad9 __CFRunLoopRun + 1529
    43  CoreFoundation                      0x00007fff96d0b0e2 CFRunLoopRunSpecific + 290
    44  HIToolbox                           0x00007fff8f1c2eb4 RunCurrentEventLoopInMode + 209
    45  HIToolbox                           0x00007fff8f1c2c52 ReceiveNextEventCommon + 356
    46  HIToolbox                           0x00007fff8f1c2ae3 BlockUntilNextEventMatchingListInMode + 62
    47  AppKit                              0x00007fff8dab6533 _DPSNextEvent + 685
    48  AppKit                              0x00007fff8dab5df2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
    49  AppKit                              0x00007fff8daad1a3 -[NSApplication run] + 517
    50  AppKit                              0x00007fff8da51bd6 NSApplicationMain + 869
    51  MyApp                               0x0000000100001fc2 main + 34
    52  libdyld.dylib                       0x00007fff97d227e1 start + 0
)
2013-08-16 08:55:26.245 MyApp[76005:303][valueForUndefinedKey:]:此类不符合密钥名称的键值编码。
2013-08-16 08:55:26.270 MyApp[76005:303](
0 CoreFoundation 0x00007fff96d69b06例外预处理+198
1 libobjc.A.dylib 0x00007fff8c7ea3f0 objc_异常_抛出+43
2 CoreFoundation 0x00007FFF96DF49-[N异常上升]+9
3基金会0x000 7FFF977 AC15C -[NSObjuts:NSKEY ValueCudid)ValueFunDealdKEY::+ 238
4基金会0x09007FFF96F3EA9--[NSObjuts:NSKEY ValueCudid)ValueFoiKe::+ 400
5基金会0x000 7FFF977 147C--[NSObjuts:NSKEY ValueCudid)ValueFooKePATH:] + 341
6基金会0x000 7FFF977 14713- [ NSObjices(NSKEY ValueCudid)ValueFoePixPosie:] + 284
7应用套件0x00007fff8dbf70a4-[NSBinder绑定值:解析标记TopPlaceHolders:+163
8应用套件0x00007fff8dbf99f7-[NSValueBinder\u调整对象:模式:observedController:observedKeyPath:context:editableState:adjustState:+667
9 AppKit 0x00007fff8dbf964c-[NSValueBinder_observeValueForKeyPath:ofObject:context:+192
10 AppKit 0x00007fff8dbfe0ab-[NSTextValueBinder_observeValueForKeyPath:ofObject:context:+43
11基金会0x000 7FFF977 167B7 NKEY ValueNoTiffyVistor + 390
12基金会0x00 00 7FFF977 181C1 NSKY ValueDeDechange + 456
13基金会0x09007FFF96D366A- [ NSObjices(NKKEY ValueBoServEng通知)DeCudioRealEngule:K]:+ 118
14应用套件0x00007fff8dc3bae6-[NSTableRowData\u addViewToRowView:atColumn:row:+696
15应用套件0x00007fff8dc3b63f-[NSTableRowData\u addViewStorRowView:atRow:+151
16应用套件0x00007fff8dc39bd5-[NSTableRowData\u addRowViewForVisibleRow:withPriorView:+415
17应用套件0x00007fff8dc3995a-[NSTableRowData\u addRowViewForVisibleRow:WithPrior RowIndex:Indicationary:withRowAnimation:+272
18应用套件0x00007fff8dc38c29-[NSTableRowData\u unsafeUpdateVisibleRowEntries]+740
19应用套件0x00007fff8dc387c1-[NSTableRowData updateVisibleRowViews]+119
20应用套件0x00007fff8dc105a7-[NSTableView布局]+165
21应用套件0x00007fff8dbc3e65-[NSView _LayoutSubtreeedingRecursionGuard:+112
22 CoreFoundation 0x00007fff96d624a6\uuu NSArrayEnumerate+582
23应用套件0x00007fff8dbc3fc6-[NSView _LayoutSubtreeedingRecursionGuard:+465
24芯基础0x00007fff96d624a6\uuu NSArrayEnumerate+582
25应用套件0x00007fff8dbc3fc6-[NSView _LayoutSubtreeedingRecursionGuard:+465
26 CoreFoundation 0x00007fff96d624a6\uuu NSArrayEnumerate+582
27应用套件0x00007fff8dbc3fc6-[NSView _LayoutSubtreeedingRecursionGuard:+465
28 CoreFoundation 0x00007fff96d624a6\uuu NSArrayEnumerate+582
29应用套件0x00007fff8dbc3fc6-[NSView _LayoutSubtreeedingRecursionGuard:+465
30芯基础0x00007fff96d624a6\uuu NSArrayEnumerate+582
31应用套件0x00007fff8dbc3fc6-[NSView _LayoutSubtreeedingRecursionGuard:+465
32 CoreFoundation 0x00007fff96d624a6\uuu NSArrayEnumerate+582
33应用套件0x00007fff8dbc3fc6-[NSView _LayoutSubtreeedingRecursionGuard:+465
34 CoreFoundation 0x00007fff96d624a6\uuu NSArrayEnumerate+582
35应用套件0x00007fff8dbc3fc6-[NSView _LayoutSubtreeedingRecursionGuard:+465
36应用套件0x00007fff8dbc3cfe-[NSView LayoutSubtreeIfRequired]+615
37应用套件0x00007fff8dbbf4ac-[需要NSWindow(NSConstraintBasedLayout)布局]+201
38应用套件0x00007fff8dab90a8 _handleIndownedSDisplayerlayout或UpdateConstraint+446
39基金会0x000、7FFF97、FE463、NSFiffTime+ 96
40 CoreFoundation 0x00007fff96d26804\uuu CFRUNLOOP\u正在调用\u OUT\u到\u计时器\u回调函数\uuu+20
41 CoreFoundation 0x00007fff96d2631d\uu CFRunLoopDoTimer+557
42 CoreFoundation 0x00007fff96d0bad9\uuu CFRunLoopRun+1529
43 CoreFoundation 0x00007fff96d0b0e2 CFRunLoopRunSpecific+290
44 HIToolbox 0x00007fff8f1c2eb4 RunCurrentEventLoopInMode+209
45 HIToolbox 0x00007fff8f1c2c52接收下一个EventCommon+356
46 HIToolbox 0x00007fff8f1c2ae3块直到外部事件匹配列表输入模式+62
47应用套件0x00007fff8dab6533 _dpsnextent+685
48应用套件
- (IBAction) segmentedControlChanged:(NSSegmentedControl*) sender {
    if (sender.selectedSegment == 0) {
        [self.songNameTableColumn unbind:NSValueBinding];
        [self.songNameTableColumn bind:NSValueBinding toObject:self.songsArrayController withKeyPath:@"arrangedObjects.name" options:nil];
    } else if (sender.selectedSegment == 1) {
        [self.songNameTableColumn unbind:NSValueBinding];
        [self.songNameTableColumn bind:NSValueBinding toObject:self.productsArrayController withKeyPath:@"arrangedObjects.localizedTitle" options:nil];
    }
}