2012-03-03 28 views
6

私は完璧に働いすべき、このコードを持っているが、それがない理由を私はudnerstandすることはできません。「操作を完了できませんでした(ココアエラー512)。」

+(NSString *)writeImageToFile:(UIImage *)image { 

    NSData *fullImageData = UIImageJPEGRepresentation(image, 1.0f); 


    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Images/"]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    BOOL isDirectory = NO; 
    BOOL directoryExists = [fileManager fileExistsAtPath:path isDirectory:&isDirectory]; 
    if (directoryExists) { 
     NSLog(@"isDirectory: %d", isDirectory); 
    } else { 
     NSError *error = nil; 
     BOOL success = [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:&error]; 
     if (!success) { 
      NSLog(@"Failed to create directory with error: %@", [error description]); 
     } 
    } 

    NSString *name = [NSString stringWithFormat:@"%@.jpg", [JEntry generateUuidString]]; 
    NSString *filePath = [path stringByAppendingPathComponent:name]; 
    NSError *error = nil; 
    BOOL success = [fullImageData writeToFile:filePath options:NSDataWritingAtomic error:&error]; 
    if (!success) { 
     NSLog(@"Failed to write to file with error: %@", [error description]); 
    } 

    return filePath; 
} 

それは、エラーなしdirectoryExistsを通過したが、それはWRITETOFILEになるとき、それは私に、このエラーを与える:

Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)" UserInfo=0x5634ee0 {NSFilePath=/var/mobile/Applications/5E25F369-9E05-4345-A0A2-381EDB3321B8/Documents/Images/18DAE0BD-6CB4-4244-8ED1-9031393F6DAC.jpg, NSUnderlyingError=0x5625010 "The operation couldn’t be completed. Not a directory"} 

これはあるかもしれない理由を任意のアイデアは? FoundationErrors.hから

答えて

8

最初にファイルを@"Documents/Images/"に書き込んだ後、コードを使用して画像を書き込もうとしたときにエラーを再現できました。

私はこのために2つの可能なシナリオがあると思う:あなたはあなたのアプリケーションの以前の実行時に誤ってそのファイルを作成した)

1。 iOS Simulator>内容と設定をリセットする、デバイスからアプリをアンインストールする:xを長押ししてをクリックして、メニューを使用してシミュレータをリセットすると解決されます。

2)このファイルを作成するアプリのどこかにコードがあります。このような場合は、このコードを見つけて削除する必要があります。

+0

最初の解決策は正しいと思われます。ありがとうございました。 :) – Andrew

+0

@sch:遅くとも、私は知っていますが、これに感謝します。私の問題は、私のコードは、iPad上では正常に実行されていたが、シミュレータではなかった。内容と設定をリセットして問題を解決しました。 – Robert

+1

私には問題2)がありました。しかし、最初に、コンパイラーによれば、永続ストアは存在しないと言います。今私は永続的なストアを追加しようとすると、私はすでに持っているので、それはココアエラー512で失敗します!なんて! – coolcool1994

3

NSFileWriteUnknownError = 512 

withIntermediateDirectories:YESを使用してみてください。

1

私の場合、ピリオド '。'ディレクトリ名(例えば、〜/ Documents/someDir.dir/somefile)の中に、問題の原因がありました。私は問題のキャラクターを削除し、エラーは消えました。