在使用网络请求时,如果服务端返回的数据不够标准,就会出现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