2012-06-14 21 views
13

NSError'dan bazı yararlı bilgiler almak istiyorum. Ben [error userInfo] çıktısını Eğer , şu olsun:NSError'dan daha yararlı bilgileri nasıl edinebilirim?

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

Ben son satırı göstermek istiyorum: "Dosya mevcut" ama bunu nasıl alabilirsiniz?

Denedim: Bunlardan

localizedDescription 
localizedFailureReason 
localizedRecoverySuggestion 
localizedRecoveryOptions 
recoveryAttempter 

Sigara "Dosya mevcut" göstermektedir. Eğer NSError documentation yukarı bakacak olursak

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

cevap

23

Son olarak, mükemmel bir NSError baskısı için kodu takip ediyorum. jbat100 ve @Peter Warbo @ sayesinde kod onlara konuda biraz ekleyin:

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

.

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

Evet, basın: "Hata Alan = NSPOSIXErrorDomain Kodu = 17 \" operasyonu \ u2019t tamamlanacak edemedim. Dosya var \ "" Ancak, "İşlem tamamlanamadı. Dosya var mı" seçebilir miyim? –

+0

Ne hakkında: 'if ([error code] == 17) NSLog (" İşlem tamamlanamadı. Dosya var ");' –

1

, bu NSUnderlyingErrorKey olarak tanımlanan bir sabiti olan bir User info dictionary keys bölüm vardır (aynı zamanda tuşları için bir açıklama vardır): yaklaşık Nasıl

1

localizedRecoverySuggestion çok yararlıdır. Sen ondan JSON dizesi alabilirsiniz:

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

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

Hayatımı kurtardın! – marcelosalloum

+1

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

İlgili konular