这几天写一段数据迁移脚本,各种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