在多个地方重用 NSArrayController

发布于 2024-12-21 22:40:59 字数 2400 浏览 0 评论 0原文

我有一个简单的 NSArrayController 连接到我的 coreData 模型之一。我可以轻松地显示 NSTableView 中的所有项目,没有问题,但是,如果我尝试将包含 NSPopUpButtonCell 的 NSTableColumn 绑定到同一控制器上的排列对象,则会抛出一个令人讨厌的异常。 (但是,如果我绑定到表外部的 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

为什么会出现这种情况?为什么不能在多个地方重用数组控制器?

I have a simple NSArrayController hooked up to one of my coreData models. I can easily show all the items in a NSTableView without problem, however, if I try to bind a NSTableColumn containing a NSPopUpButtonCell to the arrangedObjects on the same controller, I get a nasty exception thrown at me. (If I bind to a NSPopupButton that is outside the table, however, everything seems to work correctly)

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

Why is this the case? How come you can't reuse the array controller in multiple places?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只有一腔孤勇 2024-12-28 22:40:59

为什么不能在多个地方重用数组控制器?

错误消息不是这么说的。错误消息表明您尝试将数组属性绑定到值不是数组的属性:

2011-12-18 16:01:32.901 MyApp[6050:707] -[MyCoreDataModel count]:无法识别的选择器发送到实例 0x10045aea0

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

您已经确定了问题绑定,因此现在您只需修复它即可。如需更具体的建议,您需要编辑问题以包含至少一张相关绑定的屏幕截图,显示它位于哪个对象上、哪个绑定、您绑定到哪个对象、您设置了哪个控制器键,以及您设置的是什么型号的关键路径。

How come you can't reuse the array controller in multiple places?

That's not what the error message says. What the error message says is that you tried to bind an array property to a property whose value is not an array:

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

Meaning “I tried to treat this as an array (send it count), but it wasn't an array (and so didn't respond to count), and that's a problem”.

You've already identified the problem binding, so now you simply need to fix it. For more specific advice, you'll need to edit your question to include at least one screenshot of the binding in question, showing what object is it on, which binding is it, what object did you bind to, what controller key did you set, and what model key path did you set.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文