我有一个Cocoa应用程序,其中包含.sdef XML文件中描述的AppleScript字典.sdef中定义的所有AppleScript类,命令等都是工作属性.
除了我的"提交表单"命令."提交表单"命令是我唯一的命令,它尝试将一个参数传递给AppleScript,该参数是从AppleScript到Cocoa的任意哈希表.我认为这应该通过传递AppleScript来完成,AppleScript record将自动转换为NSDictionaryCocoa端.
tell application "Fluidium"
tell selected tab of browser window 1
submit form with name "foo" with values {bar:"baz"}
end tell
end tell
Run Code Online (Sandbox Code Playgroud)
"with values"参数是record- > NSDictionary参数我遇到了麻烦.请注意,记录/字典的键不能事先知道/定义.他们是任意的.
以下是我的sdef XML中此命令的定义:
<command name="submit form" code="FuSSSbmt" description="...">
<direct-parameter type="specifier" optional="yes" description="..."/>
<parameter type="text" name="with name" code="Name" optional="yes" description="...">
<cocoa key="name"/>
</parameter>
<parameter type="record" name="with values" code="Vals" optional="yes" description="...">
<cocoa key="values"/>
</parameter>
</command>
Run Code Online (Sandbox Code Playgroud)
我有一个"tab"对象,它响应sdef中的这个命令:
<class name="tab" code="fTab" description="A browser tab.">
...
<responds-to command="submit form">
<cocoa …Run Code Online (Sandbox Code Playgroud) 有人能指出我介绍ScriptingBridge的一个非常简单的hello world类型的应用程序吗?你需要一步一步地创建一个可以从ruby/python/applescript等实例化的1类-1方法项目.
我很难绕过创建可编写脚本的cocoa应用程序所需的内容,但却找不到任何具体的示例或教程.