組み込みの ObjC ブリッジを備えたJXAは、オブジェクトFoundationを介してフレームワークから列挙と定数を自動的に公開します。$例えば:
$.NSUTF8StringEncoding // -> 4
CFStringただし、自動的にインポートされない下位レベルの API にも便利な定数があります。つまり、頻繁に使用されるUTI値 ( UTIなど)を定義する のkUTType*定数です。CoreServiceskUTTypeHTML"public.html"
でそれらをインポートできますが、おそらくそのタイプが であるためObjC.import('CoreServices')、それらの文字列値CFString[Ref]に (簡単に) アクセスできません
ObjC.import('CoreServices') // import kUTType* constants; ObjC.import('Cocoa') works too
$.kUTTypeHTML // returns an [object Ref] instance - how do you get its string value?
返されるものの中心に
ある文字列を取得する方法をまだ見つけていObjC.unwrap($.kUTTypeHTML)ません。機能せず、どちらも機能しませんObjC.unwrap($.kUTTypeHTML[0])(または.deepUnwrap())。
私は疑問に思う:
- これを行うためのネイティブの JXA の方法があれば、私は見逃しています。
- それ以外の場合は、 toやなど、問題を解決できる関数
ObjC.bindFunction()のバインディングを定義するために使用する方法がありませんが、ObjC 署名を変換する方法は私には明らかではありません。CFString*()CFStringGetCString()CFStringGetCStringPtr()