AFNetworking-NSError錯(cuò)誤碼,中文提示

006qhs2dgw1f60bjr63emj30ly0c70tr.jpg

NSError 中文提示

使用AFNetworking 網(wǎng)絡(luò)請(qǐng)求失敗,返回NSError對(duì)象,通常去error.localizedDescription提示在界面上,但是error.localizedDescription是英文提示,用戶體驗(yàn)不好,本文通過AFN錯(cuò)誤的code碼,進(jìn)行中文處理.

給NSError Categary一下,擴(kuò)展個(gè)方法

#import <Foundation/Foundation.h>

@interface NSError (YJPError)
+ (NSError *)returnErrorWithError:(NSError *)error;
@end
#import "NSError+YJPError.h"

@implementation NSError (YJPError)
+ (NSError *)returnErrorWithError:(NSError *)error
{
    NSString *errorMesg;
    switch (error.code) {
        case -1://NSURLErrorUnknown
            errorMesg = @"未知錯(cuò)誤";
            break;
        case -999://NSURLErrorCancelled
            errorMesg = @"無效的URL地址";
            break;
        case -1000://NSURLErrorBadURL
            errorMesg = @"無效的URL地址";
            break;
        case -1001://NSURLErrorTimedOut
            errorMesg = @"網(wǎng)絡(luò)不給力,請(qǐng)稍后再試";
            break;
        case -1002://NSURLErrorUnsupportedURL
            errorMesg = @"不支持的URL地址";
            break;
        case -1003://NSURLErrorCannotFindHost
            errorMesg = @"找不到服務(wù)器";
            break;
        case -1004://NSURLErrorCannotConnectToHost
            errorMesg = @"連接不上服務(wù)器";
            break;
        case -1103://NSURLErrorDataLengthExceedsMaximum
            errorMesg = @"請(qǐng)求數(shù)據(jù)長(zhǎng)度超出最大限度";
            break;
        case -1005://NSURLErrorNetworkConnectionLost
            errorMesg = @"網(wǎng)絡(luò)連接異常";
            break;
        case -1006://NSURLErrorDNSLookupFailed
            errorMesg = @"DNS查詢失敗";
            break;
        case -1007://NSURLErrorHTTPTooManyRedirects
            errorMesg = @"HTTP請(qǐng)求重定向";
            break;
        case -1008://NSURLErrorResourceUnavailable
            errorMesg = @"資源不可用";
            break;
        case -1009://NSURLErrorNotConnectedToInternet
            errorMesg = @"無網(wǎng)絡(luò)連接";
            break;
        case -1010://NSURLErrorRedirectToNonExistentLocation
            errorMesg = @"重定向到不存在的位置";
            break;
        case -1011://NSURLErrorBadServerResponse
            errorMesg = @"服務(wù)器響應(yīng)異常";
            break;
        case -1012://NSURLErrorUserCancelledAuthentication
            errorMesg = @"用戶取消授權(quán)";
            break;
        case -1013://NSURLErrorUserAuthenticationRequired
            errorMesg = @"需要用戶授權(quán)";
            break;
        case -1014://NSURLErrorZeroByteResource
            errorMesg = @"零字節(jié)資源";
            break;
        case -1015://NSURLErrorCannotDecodeRawData
            errorMesg = @"無法解碼原始數(shù)據(jù)";
            break;
        case -1016://NSURLErrorCannotDecodeContentData
            errorMesg = @"無法解碼內(nèi)容數(shù)據(jù)";
            break;
        case -1017://NSURLErrorCannotParseResponse
            errorMesg = @"無法解析響應(yīng)";
            break;
        case -1018://NSURLErrorInternationalRoamingOff
            errorMesg = @"國(guó)際漫游關(guān)閉";
            break;
        case -1019://NSURLErrorCallIsActive
            errorMesg = @"被叫激活";
            break;
        case -1020://NSURLErrorDataNotAllowed
            errorMesg = @"數(shù)據(jù)不被允許";
            break;
        case -1021://NSURLErrorRequestBodyStreamExhausted
            errorMesg = @"請(qǐng)求體";
            break;
        case -1100://NSURLErrorFileDoesNotExist
            errorMesg = @"文件不存在";
            break;
        case -1101://NSURLErrorFileIsDirectory
            errorMesg = @"文件是個(gè)目錄";
            break;
        case -1102://NSURLErrorNoPermissionsToReadFile
            errorMesg = @"無讀取文件權(quán)限";
            break;
        case -1200://NSURLErrorSecureConnectionFailed
            errorMesg = @"安全連接失敗";
            break;
        case -1201://NSURLErrorServerCertificateHasBadDate
            errorMesg = @"服務(wù)器證書失效";
            break;
        case -1202://NSURLErrorServerCertificateUntrusted
            errorMesg = @"不被信任的服務(wù)器證書";
            break;
        case -1203://NSURLErrorServerCertificateHasUnknownRoot
            errorMesg = @"未知Root的服務(wù)器證書";
            break;
        case -1204://NSURLErrorServerCertificateNotYetValid
            errorMesg = @"服務(wù)器證書未生效";
            break;
        case -1205://NSURLErrorClientCertificateRejected
            errorMesg = @"客戶端證書被拒";
            break;
        case -1206://NSURLErrorClientCertificateRequired
            errorMesg = @"需要客戶端證書";
            break;
        case -2000://NSURLErrorCannotLoadFromNetwork
            errorMesg = @"無法從網(wǎng)絡(luò)獲取";
            break;
        case -3000://NSURLErrorCannotCreateFile
            errorMesg = @"無法創(chuàng)建文件";
            break;
        case -3001:// NSURLErrorCannotOpenFile
            errorMesg = @"無法打開文件";
            break;
        case -3002://NSURLErrorCannotCloseFile
            errorMesg = @"無法關(guān)閉文件";
            break;
        case -3003://NSURLErrorCannotWriteToFile
            errorMesg = @"無法寫入文件";
            break;
        case -3004://NSURLErrorCannotRemoveFile
            errorMesg = @"無法刪除文件";
            break;
        case -3005://NSURLErrorCannotMoveFile
            errorMesg = @"無法移動(dòng)文件";
            break;
        case -3006://NSURLErrorDownloadDecodingFailedMidStream
            errorMesg = @"下載解碼數(shù)據(jù)失敗";
            break;
        case -3007://NSURLErrorDownloadDecodingFailedToComplete
            errorMesg = @"下載解碼數(shù)據(jù)失敗";
            break;
    }
// 重點(diǎn): 根據(jù)錯(cuò)誤的code碼,替換AFN傳入的error 中NSLocalizedDescriptionKey鍵值對(duì),重新組裝返回
    NSMutableDictionary *errorInfo = [[NSMutableDictionary alloc]initWithDictionary:error.userInfo];
    [errorInfo setObject:errorMesg forKey:NSLocalizedDescriptionKey];
    NSError *newError = [[NSError alloc] initWithDomain:NSCocoaErrorDomain code:4 userInfo:errorInfo];
    return newError;
}

使用

導(dǎo)入NSError+ YJPError, 在你的網(wǎng)絡(luò)工具請(qǐng)求失敗處使用,剩下的想象交給你了.

    [manager GET:urlString parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        NSError *newError = [NSError returnErrorWithError:error];
//  失敗的請(qǐng)求地址
        NSLog(@"%@",newError.userInfo[@"NSErrorFailingURLKey"]);
// 中文提示語(yǔ)
        NSLog(@"%@",newError.localizedDescription);
    }];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容