2009-08-11 22 views
5

[NSData writeToFile:options:error:] tarafından döndürülen değerin anlamını anlamaya çalışıyorum. Yöntem, Apple'ın belgelerine göre "İşlem başarılı olursa EVET, aksi halde HAYIR" olan bir BOOL döndürür.başarısız, ancak hiçbir hata nesnesi döndürülmedi. Niye ya?

Yeterince adil, ancak eğer HAYIR ise, hata parametresinin daha sonra bazı geri alınabilir NSError * değerine ayarlanacağını varsaymış olurdum. Ancak sonuçlarda karşılaşıyorum, durum böyle değil. Buna göre biraz kafam karıştı ve başarısızlığa neyin sebep olduğunu nasıl belirleyeceğimi bilmiyorum.

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

success koşuyorum kodunda NO olarak çıkıyor, ama NSLog deyim asla çalıştırılmaz

zekâ için, ben bu kodu (daha fazla veya daha az) var. Nasıl olur?

Howard

cevap

14

O datanil olması mümkündür, bu durumda [data writeToFile:error:] döner nil ancak *error ayarlı değil de.

+3

Tam olarak ne olduğunu. Teşekkür ederim. Nil nesnesine bir mesaj gönderebileceğinizden daha önce hiç ısırılmamıştım; Sonunda: Şimdi kendimi gerçek bir Objective-C programcısı olarak görüyorum! :-) – hkatz

+1

Nil nesnesine gönderilen mesajlar neredeyse her zaman birkaç saatimi öldürmemi sağlıyor :) – ColdSteel

0

WriteToFile yöntemi Başarı durumunda, aslında kontrol etmek istediği bu -yani aksi takdirde FALSE döndürür.

Yani, deneyin:

if(!success) 

sizin şartlı olarak yerine (hata) eğer.

+0

Başarıyla denedim başarı == HAYIR, ama bu durumda (ve ben de kısa formunuzu denemek durumunda olduğunu varsayalım), yayımlanan günlük deyimi 'error = (null)' dir. Anlamadığım bu. – hkatz

+0

IMO iyi bir hata işleme için veri sıfır değilse, hem başarı hem de hata, kontrol etmelisiniz, başarılı olmayacaksınız, ancak hiçbir hata olacaktır, bu durumda kullanıcı için bir şey söylemelisiniz – ColdSteel

İlgili konular