首页 > 代码库 > 定制NSError

定制NSError

定制NSError

效果:

系统的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者之间建立联系的做法还是很有意思的):

 

定制NSError