好的,我有一个应用程序,我想让它可以脚本化。我设置了plist,我设置了sdef文件。
到目前为止,我只有一个苹果事件命令:gotopage。它需要一个整数。并返回一个布尔值。
相关的XML是:
<command name="gotoPage" code="dcvwgoto" description="Goto a specified page">
<cocoa class="AEGoto"/>
<direct-parameter description="Page Number" type="integer"/>
<result description="True if the page exists, False othrewise" type="boolean"/>
</command>
我有一个目标C级的aegoto.h:
@interface AEGoto :NSScriptCommand {
}
- (id)performDefaultImplementation;
- (id)performDefaultImplementation
{
int page = [[self directParameter] intValue];
Boolean retval = [gController setPage: page];
return retval? @"YES" : @"NO";
}
setpage:(int)正确,工作正常。
当我调用这个时,我的程序似乎工作正常。但是我得到了错误:
错误“docview出错:4不理解gotopage消息。”4的编号-1708
在DocView输出中,我还得到:
返回脚本命令的结果时出错:结果对象…是…无法转换为“boolean”类型的Apple事件描述符。类“nscfString”的此实例不响应-scriptingBooleandScriptor消息。
但是,如果我只返回直接布尔值,我得到:
单步执行直到退出函数-[nsscriptingappleEventHandler handlecommandEvent:withreplyEvent:]
没有行号信息。
程序接收信号:_156;exc_bad_access_157;。
所以,我想我有两个问题:1)为什么它认为它想让3转到一个页面?2)从applescript返回布尔值的正确方法是什么?
谢谢。