2009-12-07 11 views
19

Esiste un modo per ottenere i dati di errore più dettagliati di ritorno da "createFileAtPath" Ero un po 'aspettava un NSError? Attualmente sto usando il valore di ritorno BOOL.Errore più dettagliato da createFileAtPath?

success = [fileMan createFileAtPath:fileOnDisk contents:dBuffer attributes:nil]; 
if(success == YES) NSLog(@"FileCreated"); 
else { 
    NSLog(@"ERROR: Failed to create file"); 
    return 1; 
} 

Gary

risposta

54

Sono d'accordo ... mi piacerebbe avere una funzione per questo che accetta NSError!

Gli errori restituiti in questo caso sono solitamente uno degli errori POSIX dichiarati in errno.h (errno viene automaticamente incluso per te come parte delle intestazioni di Cocoa o Foundation).

visualizzare l'errore, utilizzare la funzione strerror da errno.h e menzionano la errno intero globale, che è impostato dal POSIX di basso livello io funzioni quando si verifica un problema:

if (![fm createFileAtPath:@"/etc/foobar.txt" contents:data attributes:nil]) 
{ 
    NSLog(@"Error was code: %d - message: %s", errno, strerror(errno)); 
} 

// output will be: Error was code: 13 - message: Permission denied 

L'elenco di codici di errore le costanti sono elencate nel numero Error Handling Programming Guide for Cocoa (oltre all'intestazione errno.h).

+0

perfetto, molte grazie ... – fuzzygoat

+0

Questa risposta è enorme. Intelligente! –

9

Non dovresti usare quel metodo; hanno dimenticato di inserirlo nei documenti principali (!), ma se leggi il file di intestazione di Apple trovi questo commento:

/* Questi metodi sono forniti qui per la compatibilità. I corrispondenti metodi su NSData che restituiscono NSErrors vanno considerati come metodo primario di creazione di un file da un NSData o estrae i contenuto di un file come NSData. */

Così, invece, Apple si aspetta di usare questa (che, dai test, sembra funzionare esattamente lo stesso - solo che è situato in una classe bizzarro in cui non avresti mai pensato di cercarlo (voglio creare un file vuoto ... quindi devo ... un'istanza di un oggetto nullo NSData Cosa) ha un oggetto NSError):??

https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/occ/instm/NSData/writeToFile:options:error:

Problemi correlati