NSKeyedUnarchiver decodeObjectForKey:无法为键 NS.objects 解码 class AMPathPopUpButton 的对象

NSKeyedUnarchiver decodeObjectForKey: cannot decode object of class AMPathPopUpButton for key NS.objects

我试图破解我的方式来向 Xcode 上的弹出窗口添加 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 UI 元素触发弹出窗口时看到了上面的错误。

要解决此错误并获取弹出窗口的 UI 元素 building/showing 需要两个简单的步骤:

  1. 在项目的 "General" 设置页面中添加 "Automator.framework"。在此处查看此答案:
  2. 然后确保 link 弹出窗口中的元素到 @IBOutlet 变量,如下所示:@IBOutlet var imgPath: NSPathCell!。添加 @IBOutlet 变量后,您必须拖动鼠标并将其连接到 UI 元素。对于在 Main.storyboard 中绘制的每个元素,您需要一个 @IBOutlet@IBAction,如下所示:

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

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