Xcode 13 AppleScript 框架无法将 UI 连接到 Applescript 代码



尝试使用 Xcode 13 和 AppleScript 框架为 MacOS 11.5 创建 AppleScript 可执行文件。开箱即用(我无需处理),IB显示屏上的代表图标不指向默认的AppleScript代码。这一点很清楚,因为图标的插座列表声称AppDelegate没有名为theWindow的出口,而AppleScript代码显然有。几天来我一直在尝试做一个简单的 Hello World 之类的事情,但完全无法将 UI 元素与"委托"连接起来,尤其是动作元素。我是否缺少一些配置步骤,或者这是 Xcode 13 错误?在我在YouTube上看到的为这种简单的事情创建这个的例子中,正常的Xcode故事板技术按预期工作(例如ctrl拖动),但他们都没有使用Xcode 13。任何见解都值得赞赏。IB委托绑定截图

为了将来参考,这开始在各种论坛上弹出,并且似乎是一个错误。

界面编辑器无法识别用于创建 IB 插座和操作处理程序的正常签名。 现有项目(包括基本的 Xcode 模板)将正常构建,尽管编辑器会显示出口/操作不存在的警告。

除了以编程方式创建对象或返回到早期版本的 Xcode 直到发布修复程序之外,没有太多的解决方法。

更新:

如其他答案和评论中所述,在 Xcode 14 中修复了 IB 出口和操作处理程序连接错误,但不再包含 AppleScript 应用程序和"自动操作"操作模板。

可以创建自定模板(或从早期版本的 Xcode 的 Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/macOS/Other文件夹复制),并将其放置在用户 Library 文件夹 ~/Library/Developer/Xcode/Templates/的自定模板文件夹中。 您可以将此模板文件夹命名为所需的任何名称,例如"我的模板",它将显示在模板选择器中。

每个模板都包含一个TemplateInfo.plist文件,其中包含该模板的各种设置 - 完整的教程超出了本主题的范围,但基本字典中键"标识符"的值可用于为模板提供自定义标识符,例如"com.my.cocoaApplicationAppleScript"。

我正在使用 13.4.1,但错误仍然存在。 我想知道是否值得尝试版本 14 测试版以查看它是否已解决

稍微玩了一下,我确实找到了解决方法,尽管它并不完全令人满意。这相当于直接编辑 xib xml。例如,假设 GUI 中有要在脚本中引用的按钮。首先,在 AppleScript 中创建一个属性,如下所示:

property myButton : missing value

然后导航到 Xcode 中的 xib 文件,右键单击文件导航器中的 xib 并选择Open as... → Source Code(默认值为"界面生成器 XIB 文档",稍后您将要返回)。这将向您显示图形表示的基础 xml。首先,搜索文本以找到有问题的按钮。它将看起来像这样:

<window title="Window" ...>
...
<view key="contentView" id="...">
...
<subviews>
<button ... id="xok-ud-pwL">
...
</button>
</subviews>
</view>
</window>

您希望从按钮获取id,在本例中为"xok-ud-pwL"。 然后返回到 xml 的顶部并查找 AppDelegate 条目,如下所示:

<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>

您需要对其进行编辑,使其如下所示:

<customObject id="Voe-Tx-rLC" customClass="AppDelegate">
<connections>
<outlet property="myButton" destination="xok-ud-pwL" id="gn6-Ea-hra"/>
</connections>
</customObject>
  • property应该是脚本中属性的名称
  • destination应该是要连接的按钮的 id 值
  • id应该是 3-2-3 格式的随机且唯一的字母数字

这将在属性和 GUI 元素之间创建插座连接。它甚至会出现在 appDelegate 的弹出菜单中,以便您可以以图形方式重新连接它。但是,如果您在 IB 中删除连接,Xcode 将从 xml 中删除该条目,因此您必须从头开始。

还是有缺陷的,但是...

Xcode 14 的候选版本修补了它!

"修复了与基于 AppleScript 的 AppDelegates 的出口和操作连接的问题。(83373726) (FB9643535)">

但是,您无法创建新项目。 如果您可以从 Xcode 版本 <14 中找到这个旧的模板目录,则可以再次添加模板 AppleScript App。

  • 退出 Xcode

  • 从版本 <14 复制源模板(我使用的是 v12.4):/Applications/Xcode.app/Content/Developer/Library/Xcode/Templates/Project Templates/macOS/Other/AppleScrip App.xctemplate

  • 复制到目标文件夹:/应用程序/Xcode.app/内容/开发人员/库/Xcode/模板/项目模板/其他/

  • 重新启动 Xcode

我认为苹果希望在下一个版本的MacOS中删除AppleScript

。在 Xcode 14 (14A309) 上测试 11 九月 2022!

问候

劳伦

最新更新