¿Cómo pasar un registro arbitrario de AppleScript a Cocoa en una aplicación de secuencias de comandos?

Tengo una aplicación Cocoa con un diccionario AppleScript descrito en un archivo XML .sdef. Todas las clases, comandos, etc. de AppleScript definidos en sdef son propiedad de trabajo.

Excepto mi comando "enviar formulario". El comando "enviar formulario" es mi único comando que intenta pasar un parámetro que es una tabla hash arbitraria de información de AppleScript a Cocoa. Supongo que esto debe hacerse pasando un AppleScriptrecord que se convertirá automáticamente en unaNSDictionary en el lado del cacao.

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

El parámetro "con valores" es elrecord ->NSDictionary parámetro estoy teniendo problemas con. Tenga en cuenta que las claves del registro / diccionario no pueden ser conocidas / definidas de antemano. Son arbitrarios.

Aquí está la definición de este comando en mi 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>

Y tengo un objeto de "pestaña" que responde a este comando en el sdef:

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

y cacao:

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

El objeto "pestaña" responde correctamente a todos los demás comandos de AppleScript que he definido. El objeto "pestaña" también responde al comando "enviar formulario" si no envío el parámetro opcional "con valores". Así que sé que tengo la configuración básica correctamente. El único problema parece ser el arbitrario.record->NSDictionary param

Cuando ejecuto el AppleScript arriba enAppleScript Editor.app, Me sale este error del lado del cacao:

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

y este en el lado de 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

¿Alguien puede decirme lo que me estoy perdiendo? Para referencia, toda la aplicación es de código abierto en GitHub:

http://github.com/itod/fluidium

Respuestas a la pregunta(4)

Su respuesta a la pregunta