[英]How can I get more useful information from NSError?
我想從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
他們都沒有顯示“文件存在”。
最后,我按照代碼進行完美的 NSError 打印。 謝謝@jbat100 和@Peter Warbo,我在他們上面加了一點代碼:
NSDictionary *userInfo = [error userInfo];
NSString *errorString = [[userInfo objectForKey:NSUnderlyingErrorKey] localizedDescription];
怎么樣:
NSDictionary *userInfo = [error userInfo];
NSString *error = [userInfo objectForKey:@"NSUnderlyingError"];
NSLog(@"The error is: %@", error);
如果您查找NSError 文檔,它有一個User info dictionary keys
部分,其中有一個定義為 NSUnderlyingErrorKey 的常量(它還具有鍵的描述)。
NSDictionary *userInfo = [error userInfo];
NSError *underlyingError = [userInfo objectForKey:NSUnderlyingErrorKey];
NSString *underlyingErrorDescription = [underlyingError localizedDescription];
localizedRecoverySuggestion 非常有用。 您可以從中獲取 JSON 字符串:
NSString *JSON = [[error userInfo] valueForKey:NSLocalizedRecoverySuggestionErrorKey] ;
NSError *aerror = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData: [JSON dataUsingEncoding:NSUTF8StringEncoding]
options: NSJSONReadingMutableContainers
error: &aerror];
我使用此代碼是為了查看所有潛在錯誤(iOS 14.5):
NSError *uerror = [error.userInfo objectForKey:@"NSUnderlyingError"];
while(uerror!=nil) {
NSLog(@"%ld - %@",uerror.code,uerror.localizedDescription);
uerror = [uerror.userInfo objectForKey:@"NSUnderlyingError"];
}
例子:
為了探索- (void)request:(SKRequest *)request didFailWithError:(NSError *)error
如果沒有互聯網連接中的原因,德語本地化的輸出是:
500 - Unhandled exception
203 - Bag Load Failed
203 - Bag Load Failed
203 - Bag Load Failed
-1009 - Es besteht anscheinend keine Verbindung zum Internet.
-1009 - Der Vorgang konnte nicht abgeschlossen werden.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.