iOS開發容錯處理--YRClassSafeCategory

來源:互聯網
上載者:User

iOS開發容錯處理--YRClassSafeCategory
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,需要判斷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,需要判斷key是否存在    NSString *string = [dic objectForKeySafe:key];}

從此解析寫起來so easy,而且媽媽再也不用擔心你容錯不到位產生崩潰了!

本人對以下幾種情況都做了相應處理,主要包括:
1. NSString的數值轉換、字串截取
2. NSNumber的數值轉換
3. NSDictionary的各種取值和空key處理
4. NSArray的各種越界情況處理
5. …

當發生了出錯情況時,比如解析需要一個dic,但是傳回型別為string,此時使用我的容錯庫會得到nil,由於nil的任何訊息都能安全執行通過,因此不會出現崩潰。

其實目前iOS開發界類似的庫也是存在的,比如DurexKit和VDM。有興趣的也可以去看看。

另外,我這個並未使用runtime對系統方法進行替換,而且留給開發人員自己選擇是否使用容錯方法,畢竟有些開發人員明確的情況下,少一步判斷就可以節省一點效能。

歡迎留言交流。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.