Sponsor Link
環境&対象
- macOS Monterey 12.3 Beta
- Xcode 13.3 beta
- iOS 15.2
UTType
macOS や iOS では、ファイルの拡張子に依存せず ダブルクリックすることで、対応するアプリケーションでそのファイルを開くことができます。
その背景にあるのが、UTType です。
Apple のドキュメントは、こちら。
背景説明のドキュメントは、こちら。
UTType の定義
UTType の定義は、2種類必要になります。
・OS 向けに、アプリが使用する タイプの提示
・アプリのコード向けに、使用タイプの定義
ファイルをダブルクリックで開くことや、ドラッグ&ドロップは OS が管理しています。
OS は、この UTType の情報を使用して、特定のアプリで指定されたファイルを開くことができるかどうか やドラッグ&ドロップで受け付けることができるかどうかについて 判断しています。
OS が必要とする情報は、Info.plist (的なもの)に定義して OS に提示する必要があります。
OS 向けに、アプリが使用する タイプの提示
以下のように、Xcode のプロジェクト内で 定義します。
以下は、アプリ独自のタイプを定義しているので、Exported Type として定義していますが、外部で定義されているタイプを使用するときは、Imported Type として定義します。

ドキュメントのタイプとして使用する時には、さらに Document Type としても定義する必要があります。
アプリのコード向けに、使用タイプの定義
アプリケーション内部からも 対応するタイプを参照する必要があります。
そのための定義です。
定義方法に特に制限はありませんが、UTType の extension で static に定義するのをよく見ます。
import UniformTypeIdentifiers
extension UTType {
static var mdBundle: UTType {
UTType(exportedAs: "com.smalldesksoftware.markdownbundle", conformingTo: .package)
}
}
まとめ: UTType の登録方法
アプリが使用する UTType の定義について、あらためてまとめました。
うっかり 一方でも忘れると 期待通りの動作にならないので注意が必要です。
- 2つの箇所で設定が必要
- Info.plist に定義して、OS 側から認識できるようにする
- UTType の extension に static で定義して、コードから使用できるようにする
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Sponsor Link