2012-06-14 8 views
13

Ich möchte einige nützliche Informationen von NSError erhalten. Wenn ich [error userInfo] ausdrucken, erhalte ich die folgende:Wie kann ich mehr nützliche Informationen von NSError bekommen?

{ 
    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\""; 
} 

Ich möchte die letzte Zeile zeigen: „Die Datei existiert“, aber wie kann ich es herausgreifen?

Ich habe versucht:

localizedDescription 
localizedFailureReason 
localizedRecoverySuggestion 
localizedRecoveryOptions 
recoveryAttempter 

Nicht von ihnen zeigen "Datei existiert".

Antwort

23

Schließlich schließe ich Code für den perfekten NSError-Druck. Thanks @ jbat100 und @ Peter Warbo, füge ich ein wenig an ihnen Code:

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

Wie sei:

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

Ja, es drücken: "Fehler Domain = NSPOSIXErrorDomain-Code = 17 \" Der Vorgang konnte nicht hergeleitet \ u2019t abgeschlossen sein. Datei existiert \ "" Aber, kann ich herauslesen "Die Operation konnte nicht abgeschlossen werden. Datei existiert nur"? –

+0

Wie wäre es mit: 'if ([Fehlercode] == 17) NSLog (" Die Operation konnte nicht abgeschlossen werden. Datei existiert ");' –

1

Wenn Sie die NSError documentation nachschlagen, die er einen User info dictionary keys Schnitt aufweist, der eine Konstante als NSUnderlyingErrorKey definiert hat (es kann auch eine Beschreibung für den Schlüssel hat).

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

localizedRecoverySuggestion sehr nützlich ist. Sie können den JSON-String von ihm bekommen:

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

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

Sie haben mir das Leben gerettet! – marcelosalloum

+1

Kompakter: 'error.userInfo [NSUnderlyingErrorKey] .localizedDescription;' – seeker12

Verwandte Themen