2009-08-11 12 views
5

私は[NSData writeToFile:options:error:]によって返された値の意味を理解しようとしています。このメソッドはBOOLを返します.Appleのドキュメントによれば、操作が成功すると「はい」、そうでない場合は「いいえ」です。は失敗しますが、エラーオブジェクトは返されません。どうして?

十分なフェアが、それはNOだ場合、私はエラーのパラメータは、その後、いくつかの検索可能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

に何かを教えてください、あなたは成功とエラーの両方をチェックする必要があり取り扱うまともなエラーのためIMO – hkatz

+1

ほとんどのオブジェクトには、ほとんどのメッセージは、私は時間のカップルを殺す:) – ColdSteel

0

WRITETOFILE方法は、あなたが実際に確認したいものだ - つまり失敗に成功した場合にTRUEとFALSEを返します。

ので、試してみてください:あなたの条件の代わりに、もし(エラー)として

if(!success) 

を。

+0

私は成功を試みました==いいえ、その場合(と私はあなたの短いフォームを試した場合にも推測します)、出力されたログステートメントは 'error =(null)'です。それは私が理解していないものです。データがnilであれば、あなたは、この場合には、あなたはそれが正確に何をユーザー – hkatz

+0

、 成功しないだろうが、何のエラーもありません。ありがとうございました。私はあなたが無名オブジェクトにメッセージを送ることができるという事実によって、以前は噛まれたことはありません。ようやく:私は自分自身を真のObjective-Cプログラマと考えています! :-) – ColdSteel

関連する問題