美文网首页iOS开发iOS学习笔记程序员
后台数据为空crash解决办法

后台数据为空crash解决办法

作者: 爱吃鱼的小灰 | 来源:发表于2017-03-14 16:47 被阅读371次

作为移动端开发人员做梦都想要简单点 交互的方式简单点

  • 但是看下图:
后台给返回的.png

这种的空数据,此处省略三个字!你一般直接解析有数据还好,给你个<null>你就会死的很惨!所以咱们还是做个处理吧!

  • 废话不说上代码吧:
    1、建一个类DataNullCheckTool
    .h文件内容
 #import <Foundation/Foundation.h>
@interface DataNullCheckTool : NSObject
@end
NSString *checkString(NSString *str);
NSString *checkNumber(NSString *str);

2、.m文件内容

#import "DataNullCheckTool.h"
@implementation DataNullCheckTool
@end
NSString *checkString(id str){
    NSString *tmpStr =  [NSString stringWithFormat:@"%@",str];
    if ([str isKindOfClass:[NSNull class]]||
        [tmpStr isEqualToString:@"(null)"]||
         [tmpStr isEqualToString:@"<null>"]) {
        tmpStr = @"暂无数据";
    }
    return tmpStr;
}
NSString *checkNumber(id str){
    NSString *tmpStr = [NSString stringWithFormat:@"%@",str];
    if ( [str isKindOfClass:[NSNull class]]||![str floatValue]) {
        tmpStr = @"0";
    }
    //去掉数字中的","
    NSMutableString *newStr = [NSMutableString stringWithString:tmpStr];
    for (int i = 0; i < newStr.length; i++) {
        unichar c = [newStr characterAtIndex:i];
        NSRange range = NSMakeRange(i, 1);
        if (c == ',') {
            [newStr deleteCharactersInRange:range];
            --i;
        }
    }
    NSString *newString = [NSString stringWithString:newStr];
    CGFloat tmpFloat = [newString floatValue] ;
    tmpStr = [NSString stringWithFormat:@"%.2f",tmpFloat];
    return tmpStr;
}
  • 那么调用呢也很简单方便的下边是示例:
 + (NSMutableArray *)parseRespondsData:(id )respondsData
{
// 创建一个可变数组
    NSMutableArray * dataArray = [NSMutableArray array];
    // 拿到要解析的数据我的这个数据里边是个数组
    NSArray * array = respondsData[@"datas"];
    // 首先判断这个数组是否为空
    if (array.count != 0) {
        for (NSDictionary * dic  in array) {
            // 创建model
            MoreNotificationModel * model = [[MoreNotificationModel alloc]init];
            // model解析这个是判断String类型的,还有个checkNumber是对数字判断的
            model.news_title = checkString(dic[@"news_title"]);
            model.news_short = checkString(dic[@"news_short"]);
            model.news_content = checkString(dic[@"news_content"]);
            model.create_date = checkString(dic[@"create_date"]);
            
            [dataArray addObject:model];
        }
        NSLog(@"请求到的数据%@",dataArray);
        return dataArray;

    }
    return nil;
}

这样转换后至少没数据时会显示暂无数据或者0不至于你的数据为其他东东导致你项目crash。
写的不好多多指教啊!

相关文章

  • 后台数据为空crash解决办法

    作为移动端开发人员做梦都想要简单点 交互的方式简单点 但是看下图: 这种的空数据,此处省略三个字!你一般直接解析有...

  • Retrofit @Body 后台收到数据为空

    最近对项目进行升级,发现都是一个一个参数进行传递,这样太费劲了,想了一下可以通过传递对象,这样以后修改就很方便了,...

  • json中头疼的null

    这是后台返回的数据,项目中使用了AFNetworking,因为引起了crash: -[NSNull o...

  • NullSafe,空值安全处理

    在项目开发中,和服务端交互数据时,若服务端数据为空时,会出现 ,客户端解析时会 Crash,为了增强程...

  • iOS编程提升程序数据健壮性

    在项目开发中,和服务端交互数据时,若服务端数据为空时,会出现 ,客户端解析时会 Crash,为了增强程...

  • element-ui表格数据过滤

    需求:在没有数据的时候,或者后台请求数据为null时,会直接不显示、影响用户体验如下图: 解决办法,在行中设置fo...

  • NSNull floatValue intValue 找不到指定

    近期遇到一个问题: 由于后台人员对于接口数据没有做空值处理,导致客户端接收到的有些数据为空(NSNull),而针对...

  • mysql取得空值null置为零

    背景: 开发过程中遇到取数据为空值,而后需要对该空字段进行算数运算,于是在后台进行了判断空值,并为空值赋值为0。最...

  • Android Studio生成Set、Get方法 防空判断模板

    设置非空判断,避免后台返回数据为null时,出现空指针异常闪退! 在实体类里面右键 -> Generate ->就...

  • NSDictionary中读取到'null'值时

    在iOS app开发中,偶尔会出现这种场景,由于后台人员对于接口数据没有做空值处理,导致客户端接收到的有些数据为空...

网友评论

    本文标题:后台数据为空crash解决办法

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