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