4

スクリプト可能な Mac アプリでバイナリ データ交換をサポートするために、可能であれば AS-ObjC ブリッジを使用して、データを NSData として送受信できるようにしたいと考えています。

たとえば、私は次のコードを AppleScript で使用できるようにしたいと考えています。

use framework "Foundation"

set theData to current application's NSData's dataWithContentsOfFile:"/some/binary/file"

tell application "MyApp"
    set raw value to theData
end tell

sdef には、このための値の型とプロパティが含まれています。

<suite name="My Suite" code="Demo">
    <value-type name="ObjCNSData" code="NSDa">
        <cocoa class="NSData"/>
    </value-type>
    <class name="application" code="capp">
        <property name="raw data" code="rawD" type="ObjCNSData">
            <cocoa key="rawData"/>
        </property>

NSData次に、Sketch の例で NSColor を値型の「RGB カラー」に変換する方法と同様に、変換ハンドラを の拡張として実装します。

@implementation NSData(DemoScripting)
+ (NSData *)scriptingObjCNSDataWithDescriptor:(NSAppleEventDescriptor *)desc {
    id res = [desc coerceToDescriptorType:'NSDa'];
    // -> res is NULL, which is not getting me any further
}

desc の説明は次のとおりです。

<NSAppleEventDescriptor: 'obj '{
  'form':'ID  ',
  'want':'ocid',
  'seld':'optr'($E0A8430080600000$),
  'from':null()
}>

同様に、呼び出し[NSScriptObjectSpecifier _scriptingSpecifierWithDescriptor:descriptor]も NULL を返します。

では、アプリ コード内の実際の NSData オブジェクトにアクセスするにはどうすればよいでしょうか?

また、NSData オブジェクトを AppleScript に返すにはどうすればよいでしょうか?

4

1 に答える 1