17

次のパスに書き込もうとしています:

        NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString *storePath = [docDir stringByAppendingPathComponent:@"/newfolder/test.jpg"];

        NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)];
        BOOL saved = [data writeToFile:storePath atomically:NO];
        NSLog(@"%c", saved);

現在、何も印刷されず、シミュレーターでファイルが表示されません。Documentsメインフォルダ内に「newfolder」フォルダがまだ作成されていないためでしょうか。もしそうなら、まだそこにない場合、それを作成する方法はありますか?

ありがとう!

4

1 に答える 1

31

はい、フォルダが最初に作成されていることを確認する必要があります。作成するフォルダーへのパスを渡すことを使用NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error:します (書き込もうとしているファイルではありません)。

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *storePath = [docDir stringByAppendingPathComponent:@"newfolder/test.jpg"];

[[NSFileManager defaultManager] createDirectoryAtPath:[storePath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];

NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)];

これらのメソッドの戻り値を確認し、失敗を処理する必要があります。

于 2012-11-29T20:47:49.000 に答える