Как передать произвольную запись AppleScript в какао в приложении с поддержкой скриптов?
У меня есть приложение Какао со словарем AppleScript, описанным в XML-файле .sdef. Все классы AppleScript, команды и т. Д., Определенные в sdef, являются рабочим свойством.
За исключением моей команды "отправить форму". Команда «отправить форму» - моя единственная команда, пытающаяся передать параметр, представляющий собой произвольный хеш-таблицу информации, из AppleScript в Какао. Я предполагаю, что это должно быть сделано путем передачи AppleScriptrecord
который будет автоматически преобразован вNSDictionary
на стороне какао.
tell application "Fluidium"
tell selected tab of browser window 1
submit form with name "foo" with values {bar:"baz"}
end tell
end tell
Параметр «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>
И у меня есть объект "tab", который отвечает на эту команду в sdef:
<class name="tab" code="fTab" description="A browser tab.">
...
<responds-to command="submit form">
<cocoa method="handleSubmitFormCommand:"/>
</responds-to>
и какао:
- (id)handleSubmitFormCommand:(NSScriptCommand *)cmd {
...
}
Объект «tab» правильно реагирует на все другие команды AppleScript, которые я определил. Объект «tab» также отвечает на команду «submit form», если я не отправляю необязательный параметр «with values». Так что я знаю, что правильно настроил основы. Единственная проблема, кажется, произвольнаяrecord
->NSDictionary
пары.
Когда я выполняю AppleScript выше вAppleScript Editor.app
, Я получаю эту ошибку на стороне какао:
+[NSDictionary scriptingRecordWithDescriptor:]: unrecognized selector sent to class 0x7fff707c6048
и этот на стороне AppleScript:
error "Fluidium got an error: selected tab of browser window 1 doesn’t understand the submit form message." number -1708 from selected tab of browser window 1
Кто-нибудь может сказать мне, что мне не хватает? Для справки все приложение с открытым исходным кодом на GitHub: