[Objective-C] アプリの作業フォルダを取得する

2016年1月27日

Objective-C xcode テクノロジー プログラミング

アプリのデータを保存したりする領域をデバッグ時に探すのが非常に面倒くさいです。 xcodeのバージョンアップで、シミュレータのパス構造が変わったりするんですが、xcode7.2現在では、以下の階層にデータが保存されます。 /Users/%Macのログインユーザー%/Library/Developer/CoreSimulator/Devices/%デバイスID%/data/Containers/Data/Application/%アプリケーションID%/ そもそも「Library」フォルダがシステムフォルダ扱いなので、「option」ボタンを押しながらFinderの「移動」メニューをクリックすると表示されるので、そこから移動します。

内容を整理してみた

Macのログインユーザー

これはそんなに難しくなく突破できるでしょう。

デバイスID

ここが第1難関ですが、そもそもxcodeのシミュレータは、別アプリになっているワケですが、デバイスとOSとがそれぞれバージョン違いで存在していて、それぞれにIDが違っているトコロが面倒くさいポイントです。 確かに複数機種、複数OSでのデバッグは必須ですが、作業エリアにデータ保存をするアプリの場合はそれぞれにデータを持って行かないといけません。 これは面倒くさい。 とりあえず、シミュレータのメニュー「Hardware」「Device」「Manage Device...」を選択すると、全てのバージョンが表示される管理窓が立ち上がります。 左の列から対象のデバイス、OSを選択すると、「Device Infomation」という箇所にIdentifireとして書かれているのがデバイスIDなのでそのフォルダを探してみましょう。

アプリID

このIDが最大の難関なのですが、これを表示するユーティリティアプリもMacアプリとして存在するらしいですが、結構面倒くさいので、是非デバッグ文字として表示しておくことを推奨します。

デバッグ文字として表示しておくと便利

起動関数に以下を記述しておく事で可能です。 NSLog(@"AppFolder : %@",NSHomeDirectory()); そして、アプリの作業フォルダとしては「Document」フォルダを使う事になると思うので、さらに以下の記述で対応しましょう。 NSLog(@"AppFolder : %@",[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]);