说到后台返回数据,很多开发就该吐槽了,遇到不靠谱的后台,各种给你null nil,先不要慌着跟我理论怎么会传回来nil,看完你就懂了!
首先模拟一下后台返回数据类型:
![](https://img.haomeiwen.com/i1695673/9315b28576d3dbe3.png)
我们model里面的属性:
![](https://img.haomeiwen.com/i1695673/af44d7d9a0668710.png)
大家是不是发现少了一个phone,那这个时候用mj转化出来的model.phone不就是nil了,假如我们这时候想把这个model.phone放到数组或字典里面,或者说格式化[NSString stringWithFormatter:%@,model.phone]直接崩掉 ,或者说还有其他的应用场景,这种情况下你怎么办?可以跟后台商量解决,但是假如后台不改或者说后台是领导你怎么办,接下来说解决办法,这里我建议做两层防护措施,非常保险.
1.后台返回数据处理
采用递归排空,将返回数据一层层过滤,替换所有null(nil好像不会返回这个,不过我也写了)为@""空字符串,实现方法
2.mj返回数据过滤
在model.m里面加上这句话
- (id)mj_newValueFromOldValue:(id)oldValue property:(MJProperty *)property{
if (!oldValue||[oldValue isKindOfClass:[NSNull class]]) {
return @"";
}
return oldValue;
}
这个方法可以把mj返回的属性里面可能出现nil或null的情况排除。
做到这两点就万无一失了,喜欢的朋友请点喜欢,有疑问可以留言!
网友评论