2009-12-07 12 views
19

Czy w każdym razie, aby uzyskać bardziej szczegółowe dane o błędach z "createFileAtPath", oczekiwałem od NSError? Obecnie używam wartości zwracanej przez BOOL.Bardziej szczegółowy błąd z createFileAtPath?

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

gary

Odpowiedz

54

zgadzam ... Chciałbym mieć tę funkcję, która akceptuje NSError!

Błędy zwrócone w tym przypadku są zwykle jednym z błędów POSIX zadeklarowanych w errno.h (errno jest automatycznie dołączany do ciebie jako część nagłówków Cocoa lub Foundation).

Aby zobaczyć ten błąd, należy użyć funkcji strerror z errno.h i odniesienie globalnego errno liczbę całkowitą, która jest tworzona przez POSIX niskim poziomie io funkcjach, gdy wystąpi problem:

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 

Lista kod błędu stałe są wymienione w Error Handling Programming Guide for Cocoa (oprócz samego nagłówka errno.h).

+0

idealny, wiele dzięki ... – fuzzygoat

+0

Ta odpowiedź jest ogromna. Sprytny! –

9

Nie powinieneś używać tej metody; zapomnieli umieścić to w głównych dokumentach (!), ale jeśli czytasz plik nagłówkowy Apple, znajdziesz ten komentarz:

/* Te metody zostały przedstawione tutaj w celu zapewnienia zgodności. Odpowiednie metody na NSData, które zwracają NSErrors, należy traktować jako podstawowy sposób tworzenia pliku z NSData lub pobierania zawartości jako NSData. */

Tak więc, zamiast, Apple spodziewa się korzystać z tego (który z testów, wydaje się działać dokładnie tak samo - z wyjątkiem tego, że znajduje się w dziwacznej klasie, gdzie nigdy nie myśleć go szukać (Chcę utworzyć pusty plik ... więc muszę ... instancję obiektu NSData Co zerowa) ma obiekt 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:

Powiązane problemy