मैं यह इंगित करने के लिए त्रुटि में भरोसा नहीं करता कि त्रुटि हुई है।
मैं बेन के उत्तर में वर्णित त्रुटि जांच का उपयोग कर रहा हूं, लेकिन मेरा मानना है कि यह कुछ परिस्थितियों में झूठी सकारात्मक/नकली त्रुटियां उत्पन्न कर रहा है।
इस SO answer के अनुसार, मैं सफलता/विफलता निर्धारित करने के लिए विधि के परिणाम का उपयोग करने के लिए बदल रहा हूं। और फिर (और केवल तब) विफलता के विवरण के लिए त्रुटि सूचक की जांच करें।
NSError *requestError;
NSURLResponse *urlResponse = nil;
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError];
/* Return Value
The downloaded data for the URL request. Returns nil if a connection could not be created or if the download fails.
*/
if (response == nil) {
// Check for problems
if (requestError != nil) {
...
}
}
else {
// Data was received.. continue processing
}
यह दृष्टिकोण डाउनलोडिंग प्रक्रिया में हुई त्रुटि के प्रति प्रतिक्रिया करने से बचने से बच जाएगा जो इसे विफल नहीं करता है। मुझे लगता है कि यह संभव है कि डाउनलोड होने के कारण यह गैर-महत्वपूर्ण त्रुटियों का सामना कर सके जो ढांचे के भीतर संभाले जाते हैं, और उनके पास त्रुटि सूचक के साथ त्रुटि सूचक को सेट करने का दुष्प्रभाव होता है।
उदाहरण के लिए, मुझे उन उपयोगकर्ताओं से मिली POSIX त्रुटियां मिल रही हैं, जिन्होंने यूआरएल कनेक्शन की प्रसंस्करण में गहराई से ऐसा ऐप डाउनलोड किया है।
इस कोड त्रुटि रिपोर्ट करने के लिए किया जाता है:
NSString *errorIdentifier = [NSString stringWithFormat:@"(%@)[%d]",requestError.domain,requestError.code];
[FlurryAPI logError:errorIdentifier message:[requestError localizedDescription] exception:nil];
और त्रुटि के रूप में रिपोर्ट प्रकट होता है:
Platform: iPhone
Error ID: (NSPOSIXErrorDomain)[22]
Msg: Operation could not be completed. Invalid argument
मानचित्रण कि वापस ..
requestError.domain = NSPOSIXErrorDomain
requestError.code = 22
[requestError localizedDescription] = Operation could not be completed. Invalid argument
सभी मैंने खोदने में सक्षम, यह है कि त्रुटि कोड 22 EINVAL
है, लेकिन इससे कोई और विवरण नहीं मिला है।
अन्य त्रुटियों मैं NSURL डोमेन है, जो मैं पूरी तरह विविध नेटवर्क परिस्थितियों में उम्मीद से हैं:
NSURLErrorTimedOut
NSURLErrorCannotConnectToHost
NSURLErrorNetworkConnectionLost
NSURLErrorNotConnectedToInternet
+others
नहीं के बराबर करने के लिए त्रुटि और प्रतिक्रिया को प्रारंभ करना सुनिश्चित करें, मैं EXC_BAD_ACCESS त्रुटियों हो रही थी जब तक मैं इस सवाल का जवाब मिल गया। धन्यवाद +1! – keegan3d
त्रुटि का परीक्षण करने से पहले आपको वास्तव में परिणाम की जांच करने की आवश्यकता है। प्रलेखन से * "अगर कोई कनेक्शन नहीं बनाया जा सकता है या डाउनलोड विफल हो जाता है तो" शून्य वापस आता है "* http://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference .html # // apple_ref/occ/clm/NSURLConnection/sendSynchronousRequest: returningResponse: त्रुटि: – ohhorob
कोको [गारंटी] (http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/CreateCustomizeNSError/CreateCustomizeNSError ।एचटीएमएल # // apple_ref/doc/uid/TP40001806-CH204-SW1) कि यदि विधि विफल हो जाती है, तो त्रुटि ऑब्जेक्ट मान्य होगा; यह _ गारंटी नहीं देता है कि विधि सफल होने पर त्रुटि ऑब्जेक्ट 'nil' होगा। त्रुटि का उपयोग करने से पहले आपको प्रत्यक्ष वापसी मूल्य की जांच करनी होगी। –