2012-03-03 14 views
6

ho questo codice, che deve essere perfettamente funzionante, ma non posso udnerstand perché non è:"L'operazione non potrebbe essere completata (errore di cacao 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; 
} 

E ' superato i DirectoryExists senza errori, ma quando si arriva a writeToFile, mi dà questo errore:

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"} 

Tutte le idee perché questo potrebbe essere?

risposta

8

Sono stato in grado di riprodurre l'errore durante la scrittura di un file prima nel percorso @"Documents/Images/", quindi cercando di scrivere l'immagine utilizzando il codice.

Penso che ci siano due possibili scenari per questo:

1) si è creato il file per sbaglio in una precedente esecuzione della vostra applicazione. Questo problema verrà risolto se reimposti il ​​simulatore utilizzando il menu: Simulatore iOS> Reimposta i contenuti e le impostazioni e disinstalla l'app dal dispositivo: Premi a lungo> fai clic sul simbolo x.

2) C'è qualche codice nella tua app che crea questo file. Se questo è il caso, dovresti trovare questo codice e rimuoverlo.

+0

La prima soluzione, a quanto pare, era giusta. Grazie per quello. :) – Andrew

+0

@sch: A fine giornata, lo so, ma grazie per questo. Il mio problema era che il mio codice stava funzionando bene su iPad ma non sul simulatore. Resettare i contenuti e le impostazioni ha risolto il problema. – Robert

+1

Ho avuto problema 2). Ma in primo luogo, il compilatore dice che non esiste un archivio persistente. Ora provo ad aggiungere un archivio persistente, fallisce con l'errore 512 del cacao perché ho già! Che ! – coolcool1994

3

Da FoundationErrors.h:

NSFileWriteUnknownError = 512 

Prova utilizzando withIntermediateDirectories:YES.

1

Nel mio caso un periodo "." nel nome della directory (ad esempio ~/Documents/someDir.dir/somefile) era la causa del problema. Ho rimosso il personaggio incriminato e l'errore è scomparso.

Problemi correlati