2009-08-28 19 views
2

「ファイルとURLへの書き込み」セクションをこのlinkにスクロールすると、パスがディスク上のファイルである必要がありますか?バンドル内のファイルに書き込むことは可能ですか、それとも常に展開する必要がありますか?バンドル内のファイルに書き込む?

+0

アプリケーションバンドルに保存されているファイルに書き込むことができるかどうか尋ねていますか? – mipadi

答えて

11

アプリケーションバンドルにファイルを自由に書き込むことができます。 NSBundleのpathForResource:ofType:メソッドでファイルのパスを取得するだけで、そのファイルに書き込むことができます。バンドルのディレクトリだけが必要な場合は、resourcePathを使用します。

がこれを行うには、が必要です。いろいろな理由がありますが、コード署名が壊れてしまいます。これは大きな問題です。あなたは(そのようなライブラリへの書き込みなど:アプリケーションサポート:iPhoneアプリ)の代わりに確立された規約を使用する必要があります。

EDIT:私が最初にCocoaプログラミングを学んだとき、私はライブラリを気にしたくないのでバンドルに保存しました。あなたはあなたのプログラムに変更を加えるたびに、あなたは(あなたが好みのためNSUserDefaultsを使用していないと仮定した場合)、そのプログラムのために保存したデータ/設定のすべてを失うので、それは、しかし、本当に迷惑です。私は古いバージョンから新しいバージョンにそれを移動する必要がありました。ライブラリを使用することで、これについて心配する必要はありません。

+1

Plusは、_all_ユーザーがアプリケーションバンドル内のファイルやディレクトリに書き込むことができません。あなたは本当にアプリケーションバンドルに書き込むべきではありません。 – mipadi

+0

はい、それは良い点です。 – Cinder6

5

バンドルはディスク上にあります。それは単なる ".app"ディレクトリです。ただし、このディレクトリのファイルに書き込むべきではありません。 Macでは現在可能ですが、コード署名が壊れてしまいます。 iPhoneでは、あなた自身のバンドルに既に書き込むことはできません。将来、この制限がMacで見られるはずです。 〜/ Libraryや〜/ Documentsの下のさまざまなディレクトリにアプリケーションファイルを記述してください。ガイダンスについては、File System Programming Guideを参照してください。

+0

リンクが壊れています!新しい場所への –

+1

更新リンク –

関連する問題