組み込みの ObjC ブリッジを備えたJXAは、オブジェクトFoundation
を介してフレームワークから列挙と定数を自動的に公開します。$
例えば:
$.NSUTF8StringEncoding // -> 4
CFString
ただし、自動的にインポートされない下位レベルの API にも便利な定数があります。つまり、頻繁に使用されるUTI値 ( UTIなど)を定義する のkUTType*
定数です。CoreServices
kUTTypeHTML
"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()