代码之家  ›  专栏  ›  技术社区  ›  Brian Postow

在目标C中编写一个苹果脚本应用程序,会出现奇怪的错误

  •  0
  • Brian Postow  · 技术社区  · 14 年前

    好的,我有一个应用程序,我想让它可以脚本化。我设置了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返回布尔值的正确方法是什么?

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Wevah    14 年前

    return [NSNumber numberWithBool:retval];