单击以编程方式定义的 NSPopUpButton 时出错

Posted

技术标签:

【中文标题】单击以编程方式定义的 NSPopUpButton 时出错【英文标题】:Error when clicking into a programmatically-defined NSPopUpButton 【发布时间】:2013-03-23 10:44:05 【问题描述】:

此错误仅发生特定时间(在创建新文档后)。如果我保存并重新打开,它可以工作。任何的想法?有人有同样的错误吗?

2013-03-23 11:36:52.977 Demiurge[97164:303] *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]
2013-03-23 11:36:52.979 Demiurge[97164:303] (
    0   CoreFoundation                      0x00007fff89814b06 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff833c53f0 objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff897d91d7 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 119
    3   CoreFoundation                      0x00007fff897e76bb +[NSDictionary dictionaryWithObject:forKey:] + 59
    4   AppKit                              0x00007fff85b428c4 -[NSPopUpButtonCell _menuLocationForEvent:inCellFrame:ofView:] + 581
    5   AppKit                              0x00007fff85b430fd -[NSPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 132
    6   AppKit                              0x00007fff857cbbcc -[NSControl mouseDown:] + 820
    7   AppKit                              0x00007fff857c353e -[NSWindow sendEvent:] + 6853
    8   AppKit                              0x00007fff857bf674 -[NSApplication sendEvent:] + 5761
    9   AppKit                              0x00007fff856d524a -[NSApplication run] + 636
    10  AppKit                              0x00007fff85679c06 NSApplicationMain + 869
    11  Demiurge                            0x0000000100001772 main + 34
    12  libdyld.dylib                       0x00007fff83d377e1 start + 0
    13  ???                                 0x0000000000000003 0x0 + 3
)

谢谢!

【问题讨论】:

【参考方案1】:

NSDictionaries 中不能有 nil。看起来恢复自动保存状态已损坏。不要将 autosaveId 分配给按钮或形成正确的占位符字典,其中没有 nils。

【讨论】:

以上是关于单击以编程方式定义的 NSPopUpButton 时出错的主要内容,如果未能解决你的问题,请参考以下文章

NSMenu 以编程方式选择项目

如何将 NSPopUpButton 与测量单位选择连接到 NSTextField 的呈现方式?

我可以以编程方式单击按钮以获得预定义的意图吗?

以编程方式填充 UITableView 以创建自定义下拉菜单

以编程方式定义和执行 segue

如何以编程方式单击 WPF 中的按钮?