美文网首页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解决办法

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