Uniform Type Identifiers とは?
Uniform Type Identifier - Wikipedia
Uniform Type Identifier(UTI)はデータ(エンティティ)のタイプ(種類、型)を一意に識別する文字列である。アップルコンピュータの Mac OS X v10.4 から追加され[1]、Spotlight などでファイルやフォルダ、クリップボードのデータ、バンドル、エイリアス、シンボリックリンク、ストリーミングデータなどを識別するのに利用されている。UTIはドメイン名を逆さにした構造をしている。また、UTIはマルチメディアファイルが(MIME のように)単一のタイプに識別されないように 多重継承を採用している。つまり1つの識別子は例えば public.audio、public.video、public.text、public.image など複数の識別子を継承できる。
Apple の公式ドキュメント
どのファイルがどのような Uniform Type Identifiers なのか、Appleの以下のサイトで公開されている。
公式に網羅されていない Uniform Type Identifiers が存在する
しかし上記のページにあらゆる種類の Uniform Type Identifiers が掲載されているわけではない。
アプリケーションが開くことが出来るファイルを Document types
に指定したい場合や、Action Extesion の NSExtensionActivationRule
にカスタムの Predicate Query を設定して Action Extension が開く条件となるファイルタイプを指定したい場合などに、Uniform Type Identifiers が分からず困った。
コードを書いたら拡張子から一発で Uniform Type Identifiers を調べられる
さんざん調べまわって求めていた Uniform Type Identifiers は発見したが、そのあと、コードを書けば一発で調べられることが分かった。次の人のために記録しておく。
if let str = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, "xlsx", nil)?.takeUnretainedValue() { print("\(str)") // org.openxmlformats.spreadsheetml.sheet }
一瞬で分かった...
そしてさらに:UTIをSwiftで扱うためのライブラリ
この記事を公開したら同僚の @cockscomb さんが自作のライブラリを教えてくれました。こんなのあったのか!
@niwatako https://t.co/J2grd7cgSg
— Hiroki Kato (@cockscomb) 2016, 2月 23
これにPlaygroundつけてあるのでご利用ください