2009-08-11 76 views
5

我想了解[NSData writeToFile:options:error:]返回的值的含義。該方法返回一個BOOL,根據Apple的文檔,這是一個BOOL,如果操作成功則返回YES,否則返回NO。失敗,但不返回錯誤對象。爲什麼?

不夠公平,但如果不是,我會假設error參數會被設置爲一些可檢索的NSError *值。然而,我遇到的結果,情況並非如此。因此,我有點困惑,不知道如何確定是什麼導致了失敗。

要機智,我有了這個代碼(或多或少):

NSError* error = nil; 
BOOL success = [data writeToFile: filePath error: &error]; 
if (error) 
    NSLog(@"error = %@", [error description]); 

success原來是在我運行的代碼NO,但從來沒有執行NSLog聲明。怎麼來的?

霍華德

回答

14

這有可能是datanil,在這種情況下[data writeToFile:error:]回報nil,但*error沒有設置。

+3

那它到底是什麼。謝謝。我從來沒有因爲你可以發送消息給無對象而被咬過;最後:我現在認爲自己是一個真正的Objective-C程序員! :-) – hkatz 2009-08-11 21:54:45

+1

該消息,無對象幾乎總是讓我殺了幾個小時:) – ColdSteel 2015-06-29 09:45:00

0

的將writeToFile方法返回TRUE成功和失敗返回FALSE - 這就是要真正地檢查什麼。

那麼,不妨試試:

if(!success) 

當你的條件,而不是如果(錯誤)。

+0

我試過成功== NO,但在這種情況下(並且我假設在嘗試更短的表單的情況下),發出的日誌語句是'error =(null)'。這是我不瞭解的。 – hkatz 2009-08-11 21:20:32

+0

IMO一個體面的錯誤處理,你應該檢查成功和錯誤, 如果數據是零,你不會成功,但不會有任何錯誤,在這種情況下,你應該告訴一些用戶 – ColdSteel 2015-06-29 09:46:40

相關問題