因此,您的实际问题只是如何从 AppleScriptObjC 记录错误:
AppleScriptObjC 会将脚本中抛出的任何错误记录到控制台——只需查看 Xcode 的底部窗格即可。例如,在您的情况下,您应该看到类似“«script»不理解«aevtstvl»消息。” (这不是很清楚,但它告诉您您的脚本向脚本对象发送了一个set volume
命令,该脚本对象没有处理程序。)如果您想自己捕获和记录错误,您可以将麻烦的部分放在里面一个try
/on error
块,并在错误处理程序中自己处理它。
如果您感到好奇,也可以打开NSScriptingDebugLogLevel
偏好,如下所示:
defaults write com.me.myapp NSScriptingDebugLogLevel 1
...并且 AppleScriptObjC 将记录有关通过网桥发送的每条消息的信息。(将其设置为 0 或使用defaults delete
将其关闭。)
那是错误记录。现在,你实际上并没有问,但我还是要回答,“我该如何修复我的set volume
命令?”</p>
简短版:添加tell current application to
:
tell current application to set volume output volume 50
是的,“新”音量参数的范围是 0 到 100。旧的兼容性参数从 0 到 7。(为什么?旧的控制面板音量滑块有 8 个档位。)
长版:
set volume
默认直接参数和' 对其的处理之间存在不良交互。当使用 AppleScriptObjC 时,“它”,因此默认的直接参数,除非你另有说明,是当前脚本,并且set volume
窒息。你可以通过说“它”来强迫“它”什么都不是tell current application to
。(或者,您可以使用老式的形式给它一个明确的直接参数,set volume x
其中x
是从 0 到 7 的实数。但是,这与您从中获得的数字不匹配get volume settings
,仅允许您设置输出音量,并且不允许您正确设置“静音”之类的东西。)
顺便说一句,如果你的 AppleScriptObjC 项目足够简单(特别是,如果你不需要任何接口),你可以直接在 AppleScript Editor 中编写它:选择 File > New from Template > Cocoa-AppleScript Applet,然后使用普通的 AppleScripton run
和on open
处理程序,除了您现在还可以从 Cocoa 调用任何内容。