2009-12-07 14 views
19

क्या "createFileAtPath" से अधिक विस्तृत त्रुटि डेटा प्राप्त करने के लिए वैसे भी है, मैं एक एनएसईआरआरआर की उम्मीद कर रहा था? वर्तमान में मैं बूल रिटर्न वैल्यू का उपयोग कर रहा हूं।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 (errno में घोषित पॉज़िक्स त्रुटियों में से एक कोको या फाउंडेशन हेडर के हिस्से के रूप में आपके लिए स्वचालित रूप से शामिल की जाती हैं)।

त्रुटि देखने के लिए, errno.h से strerror समारोह का उपयोग करें और संदर्भ वैश्विक errno पूर्णांक है, जो कार्यों कब निम्न स्तर POSIX द्वारा निर्धारित है जब कोई समस्या होती है:

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

+0

यह जवाब बहुत बड़ा है। चतुर! –

9

आपको उस विधि का उपयोग नहीं करना चाहिए; वे इसे मुख्य दस्तावेज़ (!) में डालना भूल गए, लेकिन यदि आप ऐप्पल हेडर फ़ाइल पढ़ते हैं तो आपको यह टिप्पणी मिलती है:

/* ये विधियां यहां संगतता के लिए उपलब्ध कराई गई हैं। एनएसडीएटा पर संबंधित विधियां जो एनएसईआरआरआर को वापस करती हैं उन्हें एनएसडीटा से फ़ाइल बनाने या एनएसडीटा के रूप में फ़ाइल की सामग्री को पुनर्प्राप्त करने की प्राथमिक विधि के रूप में माना जाना चाहिए। यह देखने के लिए सिवाय इसके कि यह एक विचित्र कक्षा में स्थित है, जहां आप कभी नहीं लगता है कि (- */

तो, बजाय, एप्पल आप इस (जो, परीक्षण से, ठीक उसी कार्य करने के लिए प्रकट होता है का उपयोग करने की उम्मीद मैं एक खाली फ़ाइल बनाने के लिए चाहते हैं ... तो मैं ... एक शून्य 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:

संबंधित मुद्दे