画像ビューアを作ってみようかと思ったら初手で軽くハマったので、同じようなことでつまずく人もいるでしょう、ということで。
環境はXcode12.3。
Document Appでプロジェクトを新規作成
これは当然なので説明は省略。
Document Typesに対象となるファイルの種類を登録
Target->Info->Document Typesにファイルを登録していく。
Classにはプロジェクト作成時に自動的に作成される"Document"クラスを指定。
IdentifierにはUTIというものを指定する。具体的にどんな文字列を指定すればいいかはApple本家の情報が見当たらないが、下記サイトに一覧が書かれている。
http://potting.syuriken.jp/potting_conv/understanding_utis_J/chapter4.html
以下、画像ファイルを開くための例。
DocumentクラスをObjective-Cから利用できるようにする
SwiftベースのアプリではNSDocumentを継承した"Document"クラスがそのままでは使えないそうで、@objcを使った一行を追加する必要がある。(この情報がなかなか見つからなかった・・・)
具体的にはこんな感じ。
@objc(Document) // 追加
class Document: NSDocument {
...
Documentクラスの読み込みのメソッドに手を入れる
ここまでくればファイル選択まではできるので、あとは実際の読み込み処理を追加する。
デフォルトでは下記のメソッドが呼び出される。
override func read(from data: Data, ofType typeName: String)
ファイルパスでもらいたい場合は下記のメソッドをオーバーライドする。
override func read(from: URL, ofType: String)