美文网首页
解决NSNull对象的烦恼

解决NSNull对象的烦恼

作者: Mage | 来源:发表于2016-11-09 23:33 被阅读2632次

    在使用网络请求时,如果服务端返回的数据不够标准,就会出现value为null情况,为此我们需要添加很多判断!比如:

        if (![str isKindOfClass:[NSNull class]]) {
            NSLog(@"%d",(int)str.length);
        }
    

    如果不判断直接使用,就有可能出现运行时错误导致崩溃,因为你不知道什么情况下,服务器就会将某些值返回成null.但是每个字段都判断也很麻烦!我在stackoverflow看到的一个方法分享给大家,提供个思路.

    方法:

    创建NSNull的分类,让一些常见的NSString或NSNumber的方法给NSNull提供一份,这样在调用类似str.length的方法时,就不会因为NSNull没有length方法而照成崩溃了.

    .h
    #import <Foundation/Foundation.h>
    @interface NSNull (JSON)
    @end
    
    .m
    #import "NSNull+JSON.h"
    @implementation NSNull (JSON)
    
    - (NSUInteger)length { return 0; }
    
    - (NSInteger)integerValue { return 0; };
    
    - (float)floatValue { return 0; };
    
    - (NSString *)description { return @"0(NSNull)"; }
    
    - (NSArray *)componentsSeparatedByString:(NSString *)separator {return @[]; }
    
    - (id)objectForKey:(id)key { return nil; }
    
    - (BOOL)boolValue { return NO; }
    
    - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet{
        NSRange nullRange = {NSNotFound, 0};
        return nullRange;
    }
    @end
    

    相关文章

      网友评论

          本文标题:解决NSNull对象的烦恼

          本文链接:https://www.haomeiwen.com/subject/wbvtpttx.html