NSKeyedUnarchiver encodeObjectForKey:无法为密钥NS.objects解码AMPathPopUpButton类的对象

时间:2019-06-19 23:27:11

标签: swift xcode macos popup

通过尝试通过在Xcode的Storyboard上将UI组件绘制到视图上来试图将UI元素添加到Xcode上的弹出窗口中,我得到了此错误:

2019-06-19 17:48:07.215803-0400 FileVacuum[28312:2252972] [General] *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (AMPathPopUpButton) for key (NS.objects); the class may be defined in source code or a library that is not linked
2019-06-19 17:48:07.222794-0400 FileVacuum[28312:2252972] [General] (

Xcode Main.storyboard screenshot

当我尝试使用新添加的Main.storyboard UI元素触发弹出窗口时,我很高兴用Xcode提取了我的应用程序,并进行了构建,并看到了上面的错误。

1 个答案:

答案 0 :(得分:0)

要解决此错误并获取弹出窗口的UI元素,请执行以下两个简单步骤:

  1. 在项目的“常规”设置页面中添加“ Automator.framework”。在这里查看此答案:https://stackoverflow.com/a/25667439/1762493
  2. 然后确保将弹出窗口中的元素链接到@IBOutlet变量,如下所示:@IBOutlet var imgPath: NSPathCell!。添加@IBOutlet变量后,您必须拖动鼠标并将其连接到UI元素。对于在@IBOutlet中绘制的每个元素,您都需要一个@IBActionMain.storyboard,如下所示:

Xcode screenshot dragging IBOutlet variable to Main.storyboard UI element

RayWenderlich.com上有一个很好的教程,用于创建弹出窗口并为MacOS应用添加连接到Main.storyboard的UI元素:

https://www.raywenderlich.com/450-menus-and-popovers-in-menu-bar-apps-for-macos