这几天写一段数据迁移脚本,各种bug和闪退,定位以后发现大部分都是NSDictionary取key引发的错误
第一个场景是判断key是否存在,NSDictionary并没有类似containsKey之类的API,网上找到的判断方法,大部分是
if([dict objectForKey:@"xxx"]){ // key存在 }
但是这里的NSDictionary是用FMDB返回的结果,可能key是存在的,但是对应的value是null。那么下面的代码:
[[dict objectForKey:@"money"] intValue];
if([dict objectForKey:@"money"]){ // logic }
if(![[dict objectForKey:@"money"] isEqual:[NSNull null]]){ // logic }
最后是写了一个NSDictionary的category来解决这个问题,只有当key存在,且key对应的value非空,才返回true
// judge nil if(![dict objectForKey:key]){ return NO; } id obj = [dict objectForKey:key];// judge NSNull return ![obj isEqual:[NSNull null]];
原文:http://blog.csdn.net/kyfxbl/article/details/44538803