服务器返回null

刚修复个bug,原来又是某个接口返回的json中的value是特么null!当取这个value进行一些操作自然会崩溃掉


这种情况发生次数太多了,今天实在忍不住上来吐个槽,毕竟我不能每个value都监测下是不是null吧?!


这服务器怎么写的,数据库怎么建的?添加数据的时候怎么验证的?接口返回的时候怎么处理的?


估计都特么随便一弄糊弄事了。。。


服务器靠不住,于是。。。于是写了个宏

#define checkNull(__X__)        (__X__) == [NSNull null] || (__X__) == nil ? @ "" : [NSString stringWithFormat:@ "%@", (__X__)]



然后每次发现crash是null导致的我就check null!


要要checknull,每天这来两句还挺带感的嘛


要要checknull,动词打次动词打次,苍茫的天涯是我的爱。。。



突然发现原爱我在一个月以前就发过类似的帖子。。。
其实我觉得该有null的做处理是应该的,不过有些关键的,比如用户id之类的,这类参数你很多时候请求服务器是需要用的,返回null即使你处理了,这个客户端也是有问题的,我的意思不是一棒子打死返回null就不行, 而且有的时候连这个key都有可能没有!不过无所谓了,看到上一个帖子有个回复不错,写了个category,这个方法不错,于是。。。



#import "NSDictionary+safeObjectForKey.h"
#define checkNull(__X__)        (__X__) == [NSNull null] || (__X__) == nil ? @ "" : [NSString stringWithFormat:@ "%@", (__X__)]


@implementation NSDictionary (safeObjectForKey)


- ( NSString *)safeObjectForKey:( id)key
{
    return checkNull([ self objectForKey:key]);
}


@end



说实话,如果是我自己的产品,我是绝对不会这么用的,凭空增加了运算,不过反正也是外包项目,而且服务器那边也不保证返回正确,那我也没办法


不过这样的代码真的算是增加程序的健壮性吗?
### 回答1: 当MyBatis的count语句返回null时,可能是由于以下几个原因引起的: 1. 数据库查询没有匹配到任何记录。如果count语句中的条件不满足数据库中的任何记录,那么count语句返回null是正常的。 2. SQL语句错误。请检查SQL语句中是否存在语法错误或逻辑错误。可以使用数据库客户端工具执行相同的SQL语句,看是否能够正常返回结果。 3. MyBatis配置有误。请检查MyBatis的配置文件,确保数据库连接信息正确,并且mapper文件中的count语句与数据库表结构相匹配。 4. 数据库连接问题。请确认数据库连接是否正常,可以通过测试连接数据库的方式来验证。 如果以上原因都排除,仍然返回null,可以尝试使用其他方式进行统计,例如使用MyBatis的select语句进行count统计,或者使用Java代码对查询结果进行判断处理。另外,可以尝试使用debug模式进行调试,查看具体的执行过程,以便找出问题所在。 ### 回答2: 当MyBatis的count方法返回null时,通常是由于以下几个原因: 1. 查询条件不满足:count方法通常用于统计满足特定条件的记录数。如果查询条件不正确或者没有满足条件的记录,则count方法会返回null。此时,可以检查查询条件是否正确,并且确认数据库中是否存在满足条件的数据。 2. SQL语句问题:count方法的实现依赖于配置文件中的SQL语句。如果SQL语句有语法错误或者逻辑问题,可能会导致查询失败并返回null。可以查看SQL语句是否正确,并确保其逻辑正确。 3. 数据库连接问题:count方法执行时需要数据库建立连接。如果数据库连接配置有问题或者数据库服务器无法访问,则会导致查询失败并返回null。可以检查数据库连接配置是否正确,并确保数据库服务器处于可用状态。 4. 数据库表结构变更:count方法执行时需要根据数据库表结构来统计记录数。如果数据库表结构有变更,可能会导致count方法无法执行或返回null。可以检查数据库表结构是否与MyBatis配置文件中定义的一致,并确保没有发生表结构变更。 综上所述,当MyBatis的count方法返回null时,可以通过检查查询条件、SQL语句、数据库连接以及数据库表结构来解决该问题。 ### 回答3: 当MyBatis的count返回null时,可能存在以下几种原因: 1. 数据库查询结果为空:在执行查询操作时,MyBatis的count语句可能返回null是因为查询条件不满足,没有查询到任何符合条件的记录。这种情况下,可以检查一下查询条件是否正确,是否与数据库中的数据匹配。 2. MyBatis中的count语句配置有误:可能是在配置MyBatis的映射文件中,count语句的配置有误,导致返回null。可以检查一下映射文件中count语句的配置是否正确,包括SQL语句的编写和参数的传递等。 3. 数据库连接问题:在执行count操作时,可能存在数据库连接问题,导致查询无法正常执行,返回null。可以检查一下数据库连接是否正常,是否能够正常访问数据库。 4. 数据库中的数据为空:如果数据库中没有任何数据,那么执行count操作也会返回null。可以检查一下数据库中是否有符合查询条件的数据。 针对以上情况,可以通过以下方式来解决: 1. 检查查询条件是否正确,并确认是否有符合条件的数据。 2. 检查MyBatis的映射文件中count语句的配置是否正确。 3. 检查数据库连接是否正常,是否能够正常访问数据库。 4. 确认数据库中是否有符合查询条件的数据。 根据具体情况,选择相应的解决方法来解决MyBatis count返回null的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值