作为移动端开发人员做梦都想要简单点 交互的方式简单点
- 但是看下图:
这种的空数据,此处省略三个字!你一般直接解析有数据还好,给你个<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。
写的不好多多指教啊!
网友评论