Как передать произвольную запись 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:

http://github.com/itod/fluidium

Ответы на вопрос(4)

Ваш ответ на вопрос