2012-06-14 12 views
13

मैं NSError से कुछ उपयोगी जानकारी प्राप्त करना चाहता हूं। अगर मैं [error userInfo] प्रिंट आउट, मैं निम्नलिखित हो:मैं एनएसईआरर से अधिक उपयोगी जानकारी कैसे प्राप्त कर सकता हूं?

{ 
    NSFilePath = "/Users/apple/Library/Application Support/iPhone Simulator/5.1/Applications/08260B6A-4D65-48DF-ADD1-FFC8750081E8/Documents/abc"; 
    NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=17 \"The operation couldn\U2019t be completed. File exists\""; 
} 

मैं अंतिम पंक्ति दिखाना चाहते हैं: "फाइल मौजूद है", लेकिन मैं कैसे इसे बाहर ले सकते हैं?

मैंने कोशिश की:

उनमें से
localizedDescription 
localizedFailureReason 
localizedRecoverySuggestion 
localizedRecoveryOptions 
recoveryAttempter 

गैर दिखाने "फाइल मौजूद है"।

उत्तर

23

अंत में, मैं सही NSError प्रिंट के लिए कोड का पालन करें। धन्यवाद @ jbat100 और @Peter Warbo, मैं उन्हें कोड पर एक छोटा सा जोड़ें:

NSDictionary *userInfo = [error userInfo]; 
    NSString *errorString = [[userInfo objectForKey:NSUnderlyingErrorKey] localizedDescription]; 
1

कैसे के बारे में:

NSDictionary *userInfo = [error userInfo]; 
NSString *error = [userInfo objectForKey:@"NSUnderlyingError"]; 
NSLog(@"The error is: %@", error); 
+0

हाँ, यह प्रेस: ​​"त्रुटि डोमेन = NSPOSIXErrorDomain कोड = 17 \" आपरेशन \ u2019t पूरा किया जा नहीं कर सके। फ़ाइल मौजूद है \ "" लेकिन, क्या मैं चुन सकता हूं "ऑपरेशन पूरा नहीं हो सका। फाइल मौजूद है" केवल? –

+0

कैसे करें: 'if ([त्रुटि कोड] == 17) एनएसएलओजी (" ऑपरेशन पूरा नहीं हो सका। फ़ाइल मौजूद है "); –

1

यदि आप NSError documentation देखो, यह एक User info dictionary keys अनुभाग जो एक स्थिर NSUnderlyingErrorKey रूप में परिभाषित किया गया है है (यह भी चाबी के लिए एक विवरण नहीं है)।

NSDictionary *userInfo = [error userInfo]; 
NSError *underlyingError = [userInfo objectForKey:NSUnderlyingErrorKey]; 
NSString *underlyingErrorDescription = [underlyingError localizedDescription]; 
1

localizedRecoverySuggestion बहुत उपयोगी है। आप इसे से JSON स्ट्रिंग प्राप्त कर सकते हैं:

NSString *JSON = [[error userInfo] valueForKey:NSLocalizedRecoverySuggestionErrorKey] ; 

      NSError *aerror = nil; 
      NSDictionary *json = [NSJSONSerialization JSONObjectWithData: [JSON dataUsingEncoding:NSUTF8StringEncoding] 
                   options: NSJSONReadingMutableContainers 
                    error: &aerror]; 
+0

आपने मेरा जीवन बचाया! – marcelosalloum

+1

अधिक कॉम्पैक्टली: 'error.userInfo [NSUnderlyingErrorKey]। LocalizedDescription; ' – seeker12

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

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