2009-07-18 14 views
2

私は、ユーザーのアプリケーションDocumentsフォルダにデータを書き込む方法を記述するコードのいくつかのスニペットを見つけました。しかし、iPhoneのシミュレータでこれを試しても、ファイルは作成されません。私はなぜアプリケーションのドキュメントディレクトリにファイルを書き込めないのですか?

[NSFileManager isWritbleAtPath:<my document folder>]

と呼ばれ、それが0(偽)を返していました。このフォルダを明示的に書き込み可能にする必要がありますか?その場合はどうしたらいいですか?

答えて

0

ありがとうございます。だから、いくつかの文書を残した後、NSDictionary、NSArray、NSStringなどの基本的なデータ型で構成されていないNSArrayを保存しようとしていたことが間違っていました。私はMPMediaItems(SDK 3.0以降のMediaKit Frameworkから)の配列を保存しようとしていました。

2

iPhoneシミュレータはディスク全体に書き込むことができるはずです。私のアプリは定期的にブートファイルのルートレベルにテストファイルをダンプします([NSData's writeToPath:@"/test.jpg" atomically:NO]を使用)。

ドキュメントフォルダへのパスを正しく指定してもよろしいですか?パス内のチルダを展開する必要があります。私のアプリがドキュメントフォルダに物を入れるために使うコードは次のとおりです。それ以上の設定はないと思うよ!

brushesDir = [[@"~/Documents/BrushPacks/" stringByExpandingTildeInPath] retain]; 
// create brush packs folder if it does not exist 
if (![[NSFileManager defaultManager] fileExistsAtPath: brushesDir]) 
      [[NSFileManager defaultManager] createDirectoryAtPath:brushesDir withIntermediateDirectories:YES attributes:nil error:nil]; 
+0

私はそれほど疑わしいです。私はこれを試してみましょう。ありがとう! – casademora

1
NSLog(@"writable: %d", [[NSFileManager defaultManager] isWritableFileAtPath:NSHomeDirectory()]); 

これは、コンソール上で1を出力します。

isWritableAtPathまたはisWritableFileAtPathメソッドを呼び出すことを意味しましたか?そして、それをクラス自体、またはその(デフォルトの)インスタンスで呼び出すことを意味しましたか?

+0

私はこれを試して、0を返します。これは私が何を間違っているのだろうと思っています – casademora

0

私はNSBundleへのファイルの書き出しに些細な問題がありました。私はアプリケーションが起動するとすぐにテキストファイルをサーバーで更新する必要があり、シミュレータとはうまく動作し、デバイスではうまく動作しないという要件がありました。私は後でNSBundleとの書面による許可がないことを知りました。 NSBundleからDocumentsディレクトリにファイルをコピーし、私の目的のために使用して私の問題を解決しました。私は使用します: [myPlistData writeToFile:fileName atomically:NO];

関連する問題