Jak przekazać dowolny rekord AppleScript do Cocoa w aplikacji skryptowej?

Mam aplikację Cocoa ze słownikiem AppleScript opisanym w pliku XML .sdef. Wszystkie klasy AppleScript, polecenia itp. Zdefiniowane w sdef są właściwością roboczą.

Z wyjątkiem mojego polecenia „wyślij formularz”. Polecenie „Prześlij formularz” jest moim jedynym poleceniem próbującym przekazać parametr, który jest arbitralnym hashtable informacji z AppleScript do Cocoa. Zakładam, że należy to zrobić, przekazując AppleScriptrecord który zostanie automatycznie przekonwertowany naNSDictionary po stronie kakao.

tell application "Fluidium"
    tell selected tab of browser window 1
        submit form with name "foo" with values {bar:"baz"}
    end tell
end tell

Parametr „with values” torecord ->NSDictionary parametr, z którym mam problem. Należy pamiętać, że klucze rekordu / słownika nie mogą być wcześniej znane / zdefiniowane. Są arbitralne.

Oto definicja tego polecenia w moim 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>

I mam obiekt „tab”, który odpowiada na to polecenie w sdef:

<class name="tab" code="fTab" description="A browser tab.">
    ...
    <responds-to command="submit form">
        <cocoa method="handleSubmitFormCommand:"/>
    </responds-to>

i kakao:

- (id)handleSubmitFormCommand:(NSScriptCommand *)cmd {
    ...
}

Obiekt „tab” poprawnie odpowiada na wszystkie inne polecenia AppleScript, które zdefiniowałem. Obiekt „tab” odpowiada również na polecenie „wyślij formularz”, jeśli nie wyślę opcjonalnego parametru „z wartościami”. Wiem więc, że poprawnie skonfigurowałem podstawy. Jedyny problem wydaje się być arbitralnyrecord->NSDictionary param.

Kiedy wykonam AppleScript powyżej wAppleScript Editor.app, Dostaję ten błąd po stronie kakao:

+[NSDictionary scriptingRecordWithDescriptor:]: unrecognized selector sent to class 0x7fff707c6048

a ten po stronie 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

Czy ktoś może mi powiedzieć, czego mi brakuje? Dla odniesienia cała aplikacja jest open source na GitHub:

http://github.com/itod/fluidium

questionAnswers(4)

yourAnswerToTheQuestion