LoginSignup
1
4

More than 3 years have passed since last update.

Swiftでドキュメントベースアプリを作る時はクラス名の設定に注意が必要

Posted at

当初シングルのアプリとして作っていたものに、後からドキュメントベース要素を追加しようとした時にどうしてもファイルを認識してくれなくてハマったことのメモ。
ドキュメントベースアプリではInfo.plistの項目としてDocument Typeの設定を行う箇所がある。この場所でファイルのUTIやRoleを宣言する他、Documentクラスと連携する場合はClassに対応するCocoaのクラスを設定する。
Objective-Cの場合はクラス名をそのまま書けば問題ないのだが、Swiftでモジュールを構成する場合、Documentクラスの名称は次のように書くのが正式となる。

Info.plist
$(PRODUCT_MODULE_NAME).DocumentClass

これが正しく設定されていないとオープンダイアログやDockのドラッグでファイルを渡しても認識してくれない。

エラーメッセージも開けないということしか教えてくれず、なぜ開けないのか説明がないのでハマってしまう。実はAppleのサンプルに記述があるのだが、NSDocumentには直接記載がない上、ドキュメントベース周りは古いドキュメントも多いので、うっかりObjective-Cの感覚でいると見落としてしまうと思う。というか、これで一時間悩んだ。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4