美文网首页
自动过滤NSDictionary和NSArray中值为nil

自动过滤NSDictionary和NSArray中值为nil

作者: MMD_ | 来源:发表于2017-11-17 14:57 被阅读26次

在开发中,不知道各位开发有没有遇到过这种情况,对于服务器返回的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];

}
测试一波
5CB2FE9D-722E-431C-92D8-8375ACA9B9B5.png

相关文章

网友评论

      本文标题:自动过滤NSDictionary和NSArray中值为nil

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