macOSアプリでSave Asができない
最近、macOSアプリ(リリース目的ではなく自分専用だけど)を作ろうかなと勉強してる。
ざっと調べるとドキュメント・ベース・アプリケーションなるものがあって、それでエディターっぽいのを作るのがHello Worldみたいなもんらしい。知らんけど。

↑プロジェクトの新規作成時に Create Document-Based Application にチェックすれば必要なクラスのサブクラスとか用意してくれる。
storyboardのviewに Text View を貼り付けてやる。
Documentクラス(NSDocumentのサブクラス、Xcodeが作ってくれてる)にすでにある以下のメソッドに必要な処理を書けば、ファイルの読み込み、保存ができる。
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError;
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError;
ところが、どういうわけか Save as ができない。

↑storyboard上だとSave Asになってるのに、

↑実行時にはDuplicateになってる。
なんぞや?と調べた結果、アプリのTarget設定のCapabilitiesってところにApp SandboxってのがあってここのFile accessがデフォでRead Onlyになってる。

ここをRead/Writeに変えたら期待通りDuplicateじゃなくSave Asになり、処理もできるようになった。そういうことだったのね、、、
macOS Sierra 10.12.6(ええ、まだSierraですねん)
Xcode 9.0.1
ざっと調べるとドキュメント・ベース・アプリケーションなるものがあって、それでエディターっぽいのを作るのがHello Worldみたいなもんらしい。知らんけど。

↑プロジェクトの新規作成時に Create Document-Based Application にチェックすれば必要なクラスのサブクラスとか用意してくれる。
storyboardのviewに Text View を貼り付けてやる。
Documentクラス(NSDocumentのサブクラス、Xcodeが作ってくれてる)にすでにある以下のメソッドに必要な処理を書けば、ファイルの読み込み、保存ができる。
- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError;
- (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError;
ところが、どういうわけか Save as ができない。

↑storyboard上だとSave Asになってるのに、

↑実行時にはDuplicateになってる。
なんぞや?と調べた結果、アプリのTarget設定のCapabilitiesってところにApp SandboxってのがあってここのFile accessがデフォでRead Onlyになってる。

ここをRead/Writeに変えたら期待通りDuplicateじゃなくSave Asになり、処理もできるようになった。そういうことだったのね、、、
macOS Sierra 10.12.6(ええ、まだSierraですねん)
Xcode 9.0.1
スポンサーサイト