效果:
系统的NSError是可以自己定制的,以下提供代码来实现并表示如何使用:
YXError.h 与 YXError.m
// // YXError.h // CustomYXError // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <Foundation/Foundation.h> // 自行添加错误码 typedef enum : NSUInteger { Crash = -10000, DisConnect, Unknow, } YXErrorCode; @interface YXError : NSObject + (NSError *)errorCode:(YXErrorCode)code userInfo:(NSDictionary *)dic; + (NSString *)transformCodeToStringInfo:(YXErrorCode)code; @end
// // YXError.m // CustomYXError // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "YXError.h" static NSDictionary *errorDictionary = nil; @implementation YXError + (void)initialize { if (self == [YXError class]) { errorDictionary = @{ /* code : errorWithDomain */ /* ==================================== */ @(Crash) : @"Crash", @(DisConnect) : @"DisConnect", @(Unknow) : @"Unknow", /* ==================================== */ }; } } + (NSError *)errorCode:(YXErrorCode)code userInfo:(NSDictionary *)dic { return [NSError errorWithDomain:errorDictionary[@(code)] code:code userInfo:dic]; } + (NSString *)transformCodeToStringInfo:(YXErrorCode)code { return errorDictionary[@(code)]; } @end
以下是使用的代码:
// // AppDelegate.m // NSError // // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "AppDelegate.h" #import "YXError.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 定制一个NSError NSError *error = [YXError errorCode:Crash userInfo:nil]; NSLog(@"%@", error); // 翻译一个NSError(将code值翻译成字符串) NSLog(@"%@", [YXError transformCodeToStringInfo:-10000]); return YES; } @end
以下是自行添加错误代码的地方:
以下是设计的细节(其中,将字典,枚举值,字符串3者之间建立联系的做法还是很有意思的):
时间: 2024-10-05 15:23:06