自动过滤NSDictionary和NSArray中值为nil

在开发中,不知道各位开发有没有遇到过这种情况,对于服务器返回的null深有体会,动不动会导致NSDictionary和NSArray放入空的值,从而导致crash;这个蛋痛的经历又不多说了;

解决

想到的是category, 的确可以满足我的需求, 可以重写掉一些构造方法

NSDictionary:
+(instancetype)dictionaryWithObjects:(const id[])objects forKeys:(const id[])keys count:(NSUInteger)cnt
{
    NSMutableArray *validKeys = [NSMutableArray new];
    NSMutableArray *validObjs = [NSMutableArray new];

    for (NSUInteger i = 0; i < cnt; i ++) {
        if (objects[i] && keys[i])
        {
            [validKeys addObject:keys[i]];
            [validObjs addObject:objects[i]];
        }
    }

    return [self dictionaryWithObjects:validObjs forKeys:validKeys];
}
NSArray:
+(instancetype)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt
{
    NSMutableArray *ma = [NSMutableArray new];

    for (NSUInteger i = 0; i < cnt; i ++) {
        if (objects[i])
        {
            [ma addObject:objects[i]];
        }
    }

    return [[NSArray alloc] initWithArray:ma];

}
测试一波
自动过滤NSDictionary和NSArray中值为nil_第1张图片
5CB2FE9D-722E-431C-92D8-8375ACA9B9B5.png

你可能感兴趣的:(自动过滤NSDictionary和NSArray中值为nil)