使用applescript cocoa objc设置卷在xcode中不工作

使用applescript cocoa objc设置卷在xcode中不工作,xcode,cocoa,applescript-objc,Xcode,Cocoa,Applescript Objc,我在xcode 3.2中有一个applescript xcode项目,我正在尝试更改系统卷…但是它不工作…它要么停止nstimer,要么根本不做任何事情 是否有办法记录错误,以便我能够查明问题 这是我的密码 set newVolume to 50 set volume output volume newVolume textName's setStringValue_(currentVolume) set currentVolume to newVolume obv这是一个更精简的版本,但实际

我在xcode 3.2中有一个applescript xcode项目,我正在尝试更改系统卷…但是它不工作…它要么停止nstimer,要么根本不做任何事情

是否有办法记录错误,以便我能够查明问题

这是我的密码

set newVolume to 50
set volume output volume newVolume
textName's setStringValue_(currentVolume)
set currentVolume to newVolume

obv这是一个更精简的版本,但实际上不起作用…它在NSTimer内部,但即使不在NSTimer内部,它仍然不起作用…newVolume、currentVolume和textName都已声明…我需要为设置的卷行声明一些内容吗?

,您实际的问题只是如何从AppleScriptObjC记录错误:

AppleScriptObjC将把脚本中抛出的任何错误记录到控制台中——只需查看Xcode中的底部窗格。例如,在您的情况下,您应该会看到类似“«脚本»不理解«aevtstvl»消息。”(这并不十分清楚,但它告诉您,您的脚本向脚本对象发送了一个
set volume
命令,而脚本对象没有相应的处理程序。)如果您想自己捕获并记录错误,您可以在错误块上的
try
/
中放置有问题的部分,并在错误处理程序中自行处理

如果您特别好奇,还可以打开
NSScriptingDebugLogLevel
首选项,如下所示:

defaults write com.me.myapp NSScriptingDebugLogLevel 1
…AppleScriptObjC将记录有关通过网桥发送的每条消息的信息。(将其设置为0或使用
defaults delete
将其关闭。)

这是错误日志记录。现在,您实际上没有问,但我还是要回答,“如何修复我的
set volume
命令?”

简短版本:添加
告诉当前应用程序到

tell current application to set volume output volume 50
是的,“新”体积参数的范围是0到100。旧的兼容性从0到7。(为什么?旧的控制面板音量滑块有8个挡块。)

长版本:

默认的直接参数和
设置卷
对它的处理之间的交互不好。使用AppleScriptObjC时,“it”,因此默认的直接参数(除非您另有说明)是当前脚本,
set volume
会阻塞该脚本。您可以通过说
告诉当前应用程序
来强制“it”为空。(或者,您可以使用老式的形式
set volume x
给它一个显式的直接参数,其中
x
是一个从0到7的实数。但是,这与从
get volume settings
获得的数字不匹配,只允许您设置输出音量,而不允许您设置“静音”之类的内容。)正确。)


顺便说一下,如果您的AppleScriptObjC项目足够简单(特别是,如果您不需要任何接口),您可以直接在AppleScript编辑器中编写它:选择File>New from Template>Cocoa AppleScript Applet,并在运行时使用普通的AppleScript
和打开时使用
处理程序,除此之外,您现在还可以调用Cocoa中的任何内容。

因此,您实际的问题只是如何记录来自AppleScriptObjC的错误:

AppleScriptObjC将把脚本中抛出的任何错误记录到控制台中——只需查看Xcode中的底部窗格。例如,在您的情况下,您应该会看到类似“«脚本»不理解«aevtstvl»消息。”(这并不十分清楚,但它告诉您,您的脚本向脚本对象发送了一个
set volume
命令,而脚本对象没有相应的处理程序。)如果您想自己捕获并记录错误,您可以在错误
块上的
try
/
中放置有问题的部分,并在错误处理程序中自行处理

如果您特别好奇,还可以打开
NSScriptingDebugLogLevel
首选项,如下所示:

defaults write com.me.myapp NSScriptingDebugLogLevel 1
…AppleScriptObjC将记录有关通过网桥发送的每条消息的信息。(将其设置为0或使用
defaults delete
将其关闭。)

这是错误日志记录。现在,您实际上没有问,但我还是要回答,“如何修复我的
set volume
命令?”

简短版本:添加
告诉当前应用程序到

tell current application to set volume output volume 50
是的,“新”体积参数的范围是0到100。旧的兼容性从0到7。(为什么?旧的控制面板音量滑块有8个挡块。)

长版本:

默认的直接参数和
设置卷
对它的处理之间的交互不好。使用AppleScriptObjC时,“it”,因此默认的直接参数(除非您另有说明)是当前脚本,
set volume
会阻塞该脚本。您可以通过说
告诉当前应用程序
来强制“it”为空。(或者,您可以使用老式的形式
set volume x
给它一个显式的直接参数,其中
x
是一个从0到7的实数。但是,这与从
get volume settings
获得的数字不匹配,只允许您设置输出音量,而不允许您设置“静音”之类的内容。)正确。)


顺便说一下,如果您的AppleScriptObjC项目足够简单(特别是,如果您不需要任何接口),您可以直接在AppleScript编辑器中编写它:选择File>New from Template>Cocoa AppleScript Applet,并在运行时使用普通的AppleScript
和打开时使用
处理程序,除了你现在也可以调用Cocoa中的任何东西。

1)苹果不喜欢设置音量的应用程序(苹果的人机界面指南再次罢工)2)我相信最大值是10,而不是50。我已经让它作为一个简单的applescript工作,只是不作为applescript objc应用程序……我很确定100是最大值,但也许这就是最大值