程序开发

iOS开发丨解决json中null/NSNull导致闪退的问题

2019-12-19  本文已影响0人  炼心术师

在网络请求中,有时候会遇到返回值为NSNull的情况,如果直接赋值给对象会导致崩溃。

解决方法

创建一个NSNull类的扩展NSNull+NullCast,来处理不同情况下的null、NSNull值,如下:

创建文件时选择Objective-C File 文件类型选择Category,Class选择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,也能自动转换成对应类型的初始化值,而不是导致程序崩溃。

上一篇下一篇

猜你喜欢

热点阅读