17

から役立つ情報を入手したい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

それらのどれも「ファイルが存在します」を示しています。

4

4 に答える 4

28

最後に、完全なNSError印刷のコードに従います。@jbat100と@PeterWarboに感謝します、私はそれらにコードを少し追加します:

    NSDictionary *userInfo = [error userInfo];
    NSString *errorString = [[userInfo objectForKey:NSUnderlyingErrorKey] localizedDescription];
于 2012-06-15T09:45:40.017 に答える
1

どうですか:

NSDictionary *userInfo = [error userInfo];
NSString *error = [userInfo objectForKey:@"NSUnderlyingError"];
NSLog(@"The error is: %@", error);
于 2012-06-14T08:07:04.413 に答える
1

NSErrorのドキュメントを調べるとUser info dictionary keys、NSUnderlyingErrorKeyとして定義された定数を持つセクションがあります(キーの説明もあります)。

NSDictionary *userInfo = [error userInfo];
NSError *underlyingError = [userInfo objectForKey:NSUnderlyingErrorKey];
NSString *underlyingErrorDescription = [underlyingError localizedDescription];
于 2012-06-14T08:19:42.693 に答える
1

ローカライズされたRecoverySuggestionは非常に便利です。それからJSON文字列を取得できます。

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

            NSError *aerror = nil;
            NSDictionary *json = [NSJSONSerialization JSONObjectWithData: [JSON dataUsingEncoding:NSUTF8StringEncoding]
                                                                 options: NSJSONReadingMutableContainers
                                                                   error: &aerror];
于 2014-10-01T10:58:37.480 に答える