从服务器获取到的数据或提交到服务器的数据有可能是nil,那我们是否需要对需要用到的每个数据都判断其是否为nil呢?
如果是的话,会不会有些繁琐? 尤其是当从服务器返回的数据或提交到服务器的数据比较多的时候。问一下该怎么保证
程序的健壮性同时又不让程序变得很臃肿。
这是我的从服务器获取数据的代码片段
NSDictionary *data = responseObject[@"data"];
NSArray *list = data[@"list"];
//这个数组用于用户点击苗木列表时,给苗木详情页面传值
if (_pageIndex == 1) {
self.sapArr = [NSMutableArray arrayWithArray:list];
}else{
for (NSDictionary *item in list) {
[self.sapArr addObject:item];
}
}
for (NSDictionary *item in list) {
HDNurseryItemModel *itemModel = [[HDNurseryItemModel alloc] init];
itemModel.itemID = item[@"_id"];
NSArray *imgArr = item[@"images"];
if (imgArr.count > 0) {
itemModel.iconName = imgArr[0];
}
itemModel.specID = [item objectForKey:@"specId"];
NSString *mainSpec = [Util decodeSapType:[itemModel.specID integerValue]];
NSInteger specMax = [[item objectForKey:@"specMax"]integerValue];
NSInteger specMin = [[item objectForKey:@"specMin"]integerValue];
NSInteger wocID = [[item objectForKey:@"planting"]integerValue];
NSString *woc = [Util decodeWOC:wocID];
//规格值
NSString *finalSpec = [Util combineSpec:mainSpec specMax:specMax specMin:specMin];
itemModel.loginName = item[@"loginName"];
itemModel.nickName = item[@"supplyLinkman"];
itemModel.leftTitle = finalSpec;
itemModel.rightTitle = woc;
itemModel.describe= item[@"spec"];
itemModel.price = [item[@"price"]floatValue] ;
itemModel.stock = [item[@"quantity"] intValue];
itemModel.addr = [NSString stringWithFormat:@"%@ %@",item[@"province"],item[@"city"]];
itemModel.city = item[@"city"];
itemModel.province = item[@"province"];
itemModel.spec = item[@"spec"];
itemModel.specID = item[@"specId"];
itemModel.specMax = item[@"specMax"];
itemModel.specMin = item[@"specMin"];
itemModel.treeID = item[@"treeId"];
itemModel.treeName = item[@"treeName"];
itemModel.nurseryID = item[@"nurseryId"];
itemModel.nurseryName = item[@"nurseryName"];
itemModel.planting = item[@"planting"];
itemModel.supplyflag = [item[@"supplyflag"] integerValue];
[_dataSource addObject:itemModel];
这是提交到服务器的函数的代码片段
NSString *treeID = realTarget.model.treeID;
NSString *treeName = realTarget.model.treeName;
NSString *specMin = realTarget.model.specMin;
NSString *specMax = realTarget.model.specMax;
NSString *spec = realTarget.model.spec;
NSString *planting = realTarget.model.planting;
NSString *price = [NSString stringWithFormat:@"%.2f",realTarget.model.price] ;
NSString *quantity =[NSString stringWithFormat:@"%d",realTarget.model.stock] ;
NSString *nurseryID = realTarget.model.nurseryID;
// NSString *nurseryName = realTarget.model.nurseryName;
NSString *specID = realTarget.model.specID;
NSString *city = realTarget.model.city;
NSString *province = realTarget.model.province;
NSString *seedlingID = realTarget.model.itemID;
NSString *type = @"1";
NSString *loginName = [Util getLoginNameFromUserDefault];
NSString *nickName = [Util getNickNameFromUserDefault];
NSString *userID = [Util getUserIDFromUserDefault];
NSDictionary *param = [NSDictionary dictionaryWithObjects:@[userID,treeID,treeName,specMin,specMax,spec,planting,price,quantity,nurseryID,loginName,nickName,specID,city,province,type,seedlingID] forKeys:@[@"ym.memberId",@"ym.treeId",@"ym.treeName",@"ym.specMin",@"ym.specMax",@"ym.spec",@"ym.planting",@"ym.price",@"ym.quantity",@"ym.nurseryId",@"ym.pLoginName",@"ym.pNickName",@"ym.specId",@"ym.city",@"ym.province",@"ym.type",@"ym.seedlingId"]];
NSLog(@"param:%@",param);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
需要判断,不只是判断服务器返回的数据是否为空,还要判断是否是字符串类型,如果服务器返回的是其他类型的数据,其他类型的数据赋给字符串的变量就会出现崩溃;而且在上传数据的时候,如果有的字段数据为空也是会出现崩溃问题;所以还是要判断。我自己就封装成一个特定的函数来判断这些异常情况。