在多个地方重用NSArrayController

时间:2011-12-18 21:03:39

标签: cocoa nsarraycontroller nspopupbuttoncell

我有一个简单的NSArrayController连接到我的一个coreData模型。我可以很容易地显示NSTableView中的所有项目,但是,如果我尝试将包含NSPopUpButtonCell的NSTableColumn绑定到同一控制器上的arrangeObjects,我会得到一个令人讨厌的异常。 (如果我绑定到表外的NSPopupButton,但一切似乎都正常工作)

Catchpoint 2 (throw)2011-12-18 16:00:07.251 MyApp[6050:707] -[MyCoreDataModel count]: unrecognized selector sent to instance 0x10045aea0

Catchpoint 2 (exception thrown).2011-12-18 16:01:32.901 MyApp[6050:707] -[MyCoreDataModel count]: unrecognized selector sent to instance 0x10045aea0
2011-12-18 16:01:32.907 MyApp[6050:707] (
    0   CoreFoundation                      0x00007fff9191e286 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff93bd6d5e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff919aa4ce -[NSObject doesNotRecognizeSelector:] + 190
    3   CoreFoundation                      0x00007fff9190b133 ___forwarding___ + 371
    4   CoreFoundation                      0x00007fff9190af48 _CF_forwarding_prep_0 + 232
    5   AppKit                              0x00007fff8b5bbad3 -[_NSSelectionBinderPlugin populateObject:withContent:valueKey:objectKey:insertsNullPlaceholder:] + 235
    6   AppKit                              0x00007fff8b45242e -[NSSelectionBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 678
    7   AppKit                              0x00007fff8b56f11a -[NSValueBinder updateTableColumnDataCell:forDisplayAtIndex:] + 145
    8   AppKit                              0x00007fff8b5af502 -[_NSBindingAdaptor tableColumn:willDisplayCell:row:] + 112
    9   AppKit                              0x00007fff8b0a00b1 -[NSTableView _tryCellBasedMouseDown:atRow:column:withView:] + 498
    10  AppKit                              0x00007fff8b062a4c -[NSTableView mouseDown:] + 1072
    11  AppKit                              0x00007fff8afc90e0 -[NSWindow sendEvent:] + 6306
    12  AppKit                              0x00007fff8af6168f -[NSApplication sendEvent:] + 5593
    13  AppKit                              0x00007fff8aef7682 -[NSApplication run] + 555
    14  AppKit                              0x00007fff8b17680c NSApplicationMain + 867
    15  InstaLibrary                        0x0000000100001732 main + 34
    16  InstaLibrary                        0x0000000100001704 start + 52

为什么会这样?为什么你不能在多个地方重用阵列控制器?

1 个答案:

答案 0 :(得分:1)

  

为什么你不能在多个地方重用阵列控制器?

这不是错误消息所说的。错误消息的内容是您尝试将数组属性绑定到值不是数组的属性:

2011-12-18 16:01:32.901 MyApp[6050:707] -[MyCoreDataModel count]: unrecognized selector sent to instance 0x10045aea0

含义“我试图将其视为一个数组(发送它count),但它不是一个数组(因此没有响应count),这是一个问题”

您已经确定了问题绑定,所以现在您只需要修复它。有关更具体的建议,您需要编辑您的问题,以包含至少一个有问题的绑定的屏幕截图,显示它是什么对象,绑定是什么,绑定到哪个对象,您设置了什么控制器键,你设置了什么样的关键路径。