2009-12-07 73 views
19

有沒有辦法從「createFileAtPath」獲取更詳細的錯誤數據我是否期待NSError?目前我正在使用BOOL返回值。更多詳細錯誤來自createFileAtPath?

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

加里

回答

54

我同意......我很想有這個接受NSError的功能!在這種情況下返回

錯誤通常是在errno.h聲明的POSIX錯誤之一(errno自動包含你作爲可可或基金會頭部的一部分)。

要查看錯誤,請使用strerror函數從errno.h和引用全局errno整數,這是由低電平POSIX IO功能設置時,會發生一個問題:

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 

的錯誤代碼列表常量在Error Handling Programming Guide for Cocoa(除了errno.h頭本身之外)中列出。

+0

完美,非常感謝... – fuzzygoat 2009-12-07 14:36:47

+0

這個答案很大。聰明! – 2013-10-09 21:58:11

9

你不應該使用該方法;他們忘了將它放在主文檔(!)中,但是如果您閱讀Apple頭文件,則會發現以下注釋:

/*這些方法在此處提供了兼容性。 NSData上返回NSErrors的相應 方法應視爲 從NSData創建文件或將文件內容作爲NSData檢索的主要方法。 */

所以,相反,蘋果希望你使用這個(從測試看來,它的功能完全一樣 - 除了它位於一個你永遠不會想到的奇怪類中)我想創建一個空文件...所以我不得不...實例化一個零NSData對象是什麼),它有一個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