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

时间: 2024-10-05 15:23:06

定制NSError的相关文章

IOS 定制浏览器(使用UIWebView)

iOS 定制浏览器(使用UIWebView) UIWebView 本身自带了前进,后退,刷新,停止等方法. 所以我们只需要调用现有的借口就可以完成一款应用内嵌的浏览器了. 比方说系统提供了如下的方法: - (void)reload; - (void)stopLoading; - (void)goBack; - (void)goForward; 并且提供了一下的几个属性来标示这几个方法是否可用: @property(nonatomic,readonly,getter=canGoBack) BOOL

二维码扫码积分系统定制开发

微信积分系统 二维码扫码积分系统定制开发找丽姐[158.1816.6626/电微]二维码营销模式系统定制开发 微信扫二维码营销系统开发 扫码领积分系统开发 一.如何实现扫二维码领红包功能? 1.使用扫描二维码领取红包对活动进行设置,包括红包数量.红包金额.促销地区.中奖概率等. 2.将生成的二维码赋到商品上面并赋涂层,一方面可以起到保证二维码的一次性,另一方面也可以引起消费者的好奇心. 3.通过手机微信打开扫一扫,扫码商品二维码关注公众号并领取红包,如果参与分享还可以获得抽奖的机会. 二.微信扫

微信小程序开发定制

上海软件定制专家:http://www.dzonly.com/?from=timeline

【转载】如何正确使用cnblogsCSS定制

转自:http://www.cnblogs.com/rvalue/p/7265386.html 用过cnblogs的估计都知道cnblogs提供了相对比较开放的个性化选项,其中最为突出的估计就是页面CSS定制了.但是没学过Web前端的人可能并不会用这个东西... 所以我打算在此分享一些定制CSS过程中使用的奇技淫巧一些方法来帮助大家定制blog qwq 以后如果想到新的主意或者更好的表述的话估计还会回来更新一波...本博文不定期更新吧w 博主并非专业Web开发,所以可能有些语言不够严谨或者不够准

定制windows环境下cmd替代软件ConEmu

定制windows环境下cmd替代软件ConEmu 公认的是Windows环境下命令行界面太难用. 不管是cmd还是powershell都不顺手!!窗口宽度不能全屏,字体太难看还不能调整,窗口背景不能更换,永远的黑白配,最痛苦的是复制和粘贴.都不知道MS是怎么想的?搞个这么个反人类的东西出来,还万年不变,从Windows诞生到Windows7不论是桌面版还是服务器版都一样,到了windows8/windows10换成powershell一样的鸡肋. 在百度搜了一下,找到cmd的替代软件conem

通过Qt4.2样式表定制程序外观

通过Qt4.2样式表定制程序外观 1. 何为Qt样式表2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6. 控制大小7. 处理伪状态8. 使用子部件定义微观样式 8.1. 相对定位    8.2. 绝对定位 摘要 由于Qt样式表的引入,定制Qt部件的外观样式变得非常简单. 无论你是想仅仅修改一个现有部件的外观,还是想从零开始设计一套全新的界面风格, 现在都有了一种新的方法而不必再去继承并实现一个QStyle的子类. 1. 何为Qt样式表 Qt 样式表的思想很大程度上是来自于

定制WinEdt 优化Latex输入

前一个礼拜忙着准备讨论班的演示稿,顺带还有单位的一门考试的试题需要排版整理,所以微博更新的速度又被拖后了.说实话,Latex这种"所想即所得"的排版系统对人的确是一种折磨,它并不适合快速的文档编辑,倒是适合我们这种具有强烈强迫症倾向的人用来欣赏.所谓"慢工出细活",用Latex编辑文稿.书籍排版是集腋成裘的勾当,有许多东西是在这种折磨的过程中慢慢积累出来的.我在几年的考试命题出题过程中,从最开始的Word+Mathtype逐渐过渡到Word+Aurora,最后还是

20_Shell语言———VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能

Vim编辑器可以让用户按照需求来定制一些使用属性. 一.窗口属性定义 1)显示行号 行号不是内容,只是用来帮助用户确认文本所在的行.在vim编辑器中,如果要显示行号,可以在末行模式下输入: set number 如果想关闭,则可以在功能名称前面加上no,即: set nonumber 命令可以被简写,如set number 可以简写为 set nu:set nonumber 可以简写为 set nonu. 注意,上述设定仅对当前vim的进程有效,一旦当前进程关闭,这些设定就会失效,如果要使设定永

RHEL定制可用的YUM源

一.配置网络YUM源( 仅以163源为例 ) 1.1 卸载RHEL原有YUM套件: [[email protected] Desktop]# rpm -qa | grep yum    ##记录下YUM套件的各个构成部分 [[email protected] Desktop]# rpm -qa | grep yum | xargs rpm -e --nodeps 1.2 下载对应RHEL发行版的CENT的yum套件(可借助浏览器完成): [[email protected] Desktop]#