2016-12-18 5 views
0

これは実際には2倍の問題です。 1つの部分では、特定のシステム上で宣言されたすべてのUTIを列挙するきちんとした方法があるかどうかを知りたいと思います。Cocoa(Swift/Obj-C)で宣言されたすべてのUTIを取得する方法、および/またはAppバンドルで定義されたUTIを判断する方法?

私はlsregister -dumpがオプションであることを知っています。しかし、もっと良い解決策がないのか疑問に思う。

さらに...アプリのパスを指定して、インポート/エクスポートされたUTIのリストを取得する方法があるのだろうかと思います。私は逆が可能であるべきであることを知っている(すなわち、どのバンドルが所与のUTIを宣言しているかを見つける)。

私がこれについて疑問に思っている理由の1つは、質問の最初の部分の可能な解決策は、すべてのアプリケーションを反復し、インポート/エクスポートされたUTIを取得することにあるからです(ただし、非常に効率的な解決策)

私はどこでも私は考えることができ、本当に答えに近いものではありません。これまでのところ、それはどちらかだそれを思わlsregisterの-dumpの出力を解析、またはアプリのInfo.plistのファイル...最後に

から直接UTIキーを読み取ろうと、私の検索では、私がプライベートに遭遇しましたAPI かもしれない私は絶対にそれを使用する方法が全くないので、それはオンラインのためのドキュメントがないので...私は"__UTCopyDeclaredTypeIdentifiers"について話しています...多分誰かが知っている(もしあれば)パラメータはその関数take、および/または正確に何を返しますか?

答えて

0
import Foundation 
@_silgen_name("_UTCopyDeclaredTypeIdentifiers") func UTCopyDeclaredTypeIdentifiers() -> CFArray 

let UTIs = UTCopyDeclaredTypeIdentifiers() 
print(UTIs) 

関数が知っているすべてのUTIを出力する必要があります。

+0

これは、少なくともそれを解決します!それは簡単だとは信じられない...ありがとう! –

関連する問題