定制NSError

定制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 = -,
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:-]); return YES;
} @end

以下是自行添加错误代码的地方:

定制NSError

以下是设计的细节(其中,将字典,枚举值,字符串3者之间建立联系的做法还是很有意思的):

定制NSError

上一篇:Vue Authentication And Route Handling Using Vue-router(详解)


下一篇:hdu 1242 Rescue(BFS入门)