问题
- 在应用开发中,避免不了前端要和后台产生数据通信。
- 在后台查询数据库时,假如数据库没有数据,部分后台没有加处理的话就会返回 ‘null’ 。
- 移动端接收到后台发送的null的时候使用 objectForKey 或者直接dict[@""];程序会崩溃
解决 崩溃问题
- 有很多大牛帮我们写了很多转换的文件
- NullSafe
- JSONModel
- YYModel
- MJExtension
上面的这些 ‘轮子’ 都能帮我们解决 因为 ‘null’ 所造成的崩溃问题。使用方法就不详写了。上面的介绍里面写的有。
解决显示 ‘null’ 的问题
- 思路一
每个显示的地方都加一层判断,虽然这样无疑是可以解决问题,但是这样容易漏加,而且不易维护和修改。 - 思路二
重构 UILabel 的方法。但是最好还是不要修改系统的东西。 - 思路三
在请求返回数据的地方遍历所有数据,然后发现 ‘null’ 就变为字符串空。
但是这样遍历,如果数据稍微再大点 就会影响性能。 - 思路四
我这里以 JSONModel 为例
修改 JSONModel ,在字典转 model 时,加一步判断就OK了。推荐这种
代码如下 (JSONModel.m )中
方法名
-(BOOL)__importDictionary:(NSDictionary*)dict withKeyMapper:(JSONKeyMapper*)keyMapper validation:(BOOL)validation error:(NSError**)err
在里面添加
if ([jsonValue isKindOfClass:[NSString class]]) {
if ([jsonValue isEqualToString:@"null"]) {
jsonValue = @"";
}
}
这样就大功告成了。