Swift アプリケーションを呼び出して値を取得する AppleScript を作成しようとしています。このメソッドは文字列を受け取り、別の文字列を返す必要があります。
これが私の.SDFファイルです:
<suite name="My Suite" code="MySU" description="My AppleScript suite.">
<class name="application" code="capp" description="An application's top level scripting object.">
<cocoa class="NSApplication"/>
<element type="my types" access="r">
<cocoa key="types"/>
</element>
</class>
<command name="my command" code="MyCOMMND" description="My Command">
<parameter name="with" code="MyPR" description="my Parameter" type="text">
<cocoa key="myParameter"/>
</parameter>
<result type="text" description="the return value"/>
<cocoa method="myCommand:"/>
</command>
</suite>
対応する Swift コードはかなり単純です。
func myCommand(_ command: NSScriptCommand) -> String
{
if let myParameter = command.evaluatedArguments?["myParameter"] as? String
{
return "Hello World!"
}
else
{
return "Nothing happening here. Move on."
}
}
そして最後に私のAppleScriptはここにあります:
tell application "MyApp"
set r to my command with "Hello"
end tell
AppleScript を実行すると、コマンドは認識されますが、関連付けようとした Swift コードが呼び出されません。Xcode も AppleScript も問題を報告しません。何かを見逃したり、コードを間違った場所に置いたりしていませんか?