Latest 1.0.0
Homepage https://github.com/YueRuo/YRClassSafeCategory
License MIT
Platforms ios 5.0, requires ARC
Authors

iOS开发 容错库


支持CocoaPods安装

   pod 'YRClassSafeCategory'

最近发现还是有很多新手朋友在问类似问题怎么解决,想了想把几年前做的,一直在使用的小容错库开源出来。

iOS开发中,经常遇到解析字典或其他转换的情况,比如下面这个dictionary:

NSDictionary *dictionary = @{@"num1":@1,
                      @"num2":@"2",
                      @"string":@"this is a string",
                      @"dic":@{@"key":@"value"},
                      @"array":@[@1,@2],
                      };

一般的解析

-(void)parseDic:(NSDictionary*)dictionary{
    NSInteger num1;
    id num1Obj = [dictionary objectForKey:@"num1"];
    if (num1Obj) {
        if ([num1Obj isKindOfClass:[NSNumber class]]) {
            num1 = [num1Obj integerValue];
        }else if([num1Obj isKindOfClass:[NSString class]]){
            num1 = [num1Obj integerValue];
        }
    }
    NSDictionary *dic = [dictionary objectForKey:@"dic"];
    if (dic&&[dic isKindOfClass:[NSDictionary class]]) {
        //继续处理
    }
    //。。。其他之类的
    NSString *key;//又或者,你遇到了一个传值过来的key,需要判断
    if(key){
        NSString *string = [dic objectForKey:key];
    }
}

使用了我的容错库后

-(void)parseDic:(NSDictionary*)dictionary{
    NSInteger num1 = [dictionary integerForKeySafe:@"num1"];
    NSDictionary *dic = [dictionary dictionaryForKeySafe:@"dic"];
    //。。。其他之类的
    NSString *key;//又或者,你遇到了一个传值过来的key,需要判断
    NSString *string = [dic objectForKeySafe:key];
}

从此解析写起来so easy,而且妈妈再也不用担心你容错不到位产生崩溃了!

本人对以下几种情况都做了相应处理,主要包括:

  1. NSString的数值转换、字符串截取
  2. NSNumber的数值转换
  3. NSDictionary的各种取值和空key处理
  4. NSArray的各种越界情况处理
  5. NSNull的常见意外方法调用处理

当发生了出错情况时,比如解析需要一个dic,但是返回类型为string,此时使用我的容错库会得到nil,由于nil的任何消息都能安全执行通过,因此不会出现崩溃。


同时,本人对常用的dictionary解析方法进行补充,增加了如:

-(NSString*)stringForKeySafe:(id)akey;
-(NSNumber*)numberForKeySafe:(id)aKey;
-(NSInteger)integerForKeySafe:(id)aKey;
-(long long)longlongForKeySafe:(id)aKey;
-(BOOL)boolForKeySafe:(id)aKey;
-(NSArray*)arrayForKeySafe:(id)aKey;
-(NSDictionary*)dictionaryForKeySafe:(id)aKey;

这些更直接易用的解析方法,确保拿到的一定是该类型数据,如果类型不匹配或有其他问题都会返回nil。

欢迎大家使用和交流。

Latest podspec

{
    "name": "YRClassSafeCategory",
    "version": "1.0.0",
    "summary": "A easy use category set to keep some method safe and reduce the crash.",
    "description": "A easy use category set to keep some method safe and reduce the crash.nand easy to get right type data with this category.",
    "homepage": "https://github.com/YueRuo/YRClassSafeCategory",
    "license": "MIT",
    "authors": {
        "wangxiaoyu": "[email protected]126.com"
    },
    "source": {
        "git": "https://github.com/YueRuo/YRClassSafeCategory.git",
        "tag": "1.0.0"
    },
    "platforms": {
        "ios": "5.0"
    },
    "requires_arc": true,
    "source_files": "YRClassSafeCategory/**/*"
}

Pin It on Pinterest

Share This