在网络请求中,有时候会遇到返回值为NSNull的情况,如果直接赋值给对象会导致崩溃。
解决方法
创建一个NSNull类的扩展NSNull+NullCast,来处理不同情况下的null、NSNull值,如下:
.h文件
#import <Foundation/Foundation.h>
@interface NSNull (NullCast)
@end
.m文件
#import "NSNull+NullCast.h"
@implementation NSNull (NullCast)
- (float)floatValue { return 0.0; }
- (int)intValue { return 0; }
- (NSUInteger)length { return 0; }
- (NSInteger)integerValue { return 0; };
- (NSString *)description { return @"0(NSNull)"; }
- (NSString *)stringValue { return @""; };
- (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;
}
这样,即使是遇到NSNull,也能自动转换成对应类型的初始化值,而不是导致程序崩溃。