2009-12-07 40 views
19

Có cách nào để lấy lại dữ liệu lỗi chi tiết hơn từ "createFileAtPath" Tôi có mong đợi NSError không? Hiện tại tôi đang sử dụng giá trị trả lại BOOL.Lỗi chi tiết hơn từ createFileAtPath?

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

gary

Trả lời

54

Tôi đồng ý ... Tôi rất muốn có một chức năng cho điều này chấp nhận NSError!

Lỗi được trả lại trong trường hợp này thường là một trong các lỗi POSIX được khai báo trong errno.h (errno được tự động đưa vào cho bạn như một phần của tiêu đề Cacao hoặc Foundation).

Để thấy lỗi, sử dụng strerror chức năng từ errno.h và tham khảo các errno nguyên toàn cầu, được thiết lập bởi các POSIX ở mức độ thấp io chức năng khi có vấn đề xảy ra:

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 

Danh sách các mã lỗi hằng số được liệt kê trong số Error Handling Programming Guide for Cocoa (ngoài chính tiêu đề errno.h).

+0

Perfect, cảm ơn nhiều ... – fuzzygoat

+0

Câu trả lời này rất lớn. Tài giỏi! –

9

Bạn không được phép sử dụng phương thức đó; họ quên đặt tài liệu này vào tài liệu chính (!), nhưng nếu bạn đọc tệp tiêu đề của Apple, bạn tìm thấy nhận xét này:

/* Những phương pháp này được cung cấp tại đây để tương thích. Phương thức tương ứng trên NSData trả về NSErrors nên được coi là phương thức chính để tạo tệp từ NSData hoặc truy xuất nội dung của tệp dưới dạng NSData. */

Vì vậy, thay vào đó, Apple mong bạn sử dụng (trong đó, từ thử nghiệm, có vẻ giống hệt - ngoại trừ trường nằm trong lớp kỳ quái nơi bạn không bao giờ nghĩ tìm kiếm tôi muốn tạo ra một tập tin rỗng ... vì vậy tôi phải ... tạo một đối tượng bằng không NSData gì) nó có một đối tượng 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:

Các vấn đề liên quan