iOS 处理后台丢给的 ‘null’ 问题

iOS 处理后台丢给的 ‘null’ 问题_第1张图片
错误.jpg

问题

  • 在应用开发中,避免不了前端要和后台产生数据通信。
  • 在后台查询数据库时,假如数据库没有数据,部分后台没有加处理的话就会返回 ‘null’ 。
  • 移动端接收到后台发送的null的时候使用 objectForKey 或者直接dict[@""];程序会崩溃

解决 崩溃问题

  • 有很多大牛帮我们写了很多转换的文件
  • NullSafe
  • JSONModel
  • YYModel
  • MJExtension

上面的这些 ‘轮子’ 都能帮我们解决 因为 ‘null’ 所造成的崩溃问题。使用方法就不详写了。上面的介绍里面写的有。

iOS 处理后台丢给的 ‘null’ 问题_第2张图片
null.png

解决显示 ‘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 = @"";
            }
        }

这样就大功告成了。

你可能感兴趣的:(iOS 处理后台丢给的 ‘null’ 问题)