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と@PeterWarboに感謝します。コードを少し追加します。
NSDictionary *userInfo = [error userInfo];
NSString *errorString = [[userInfo objectForKey:NSUnderlyingErrorKey] localizedDescription];
どうですか:
NSDictionary *userInfo = [error userInfo];
NSString *error = [userInfo objectForKey:@"NSUnderlyingError"];
NSLog(@"The error is: %@", error);
localizedRecoverySuggestionは非常に便利です。それからJSON文字列を取得できます。
NSString *JSON = [[error userInfo] valueForKey:NSLocalizedRecoverySuggestionErrorKey] ;
NSError *aerror = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData: [JSON dataUsingEncoding:NSUTF8StringEncoding]
options: NSJSONReadingMutableContainers
error: &aerror];
NSErrorドキュメント を検索すると、NSUnderlyingErrorKeyとして定義された定数を持つUser info dictionary keys
セクションがあります(キーの説明もあります)。
NSDictionary *userInfo = [error userInfo];
NSError *underlyingError = [userInfo objectForKey:NSUnderlyingErrorKey];
NSString *underlyingErrorDescription = [underlyingError localizedDescription];