NSDictionary判断key存在,且value非空
来源:互联网 发布:php人员管理系统源码 编辑:程序博客网 时间:2024/05/10 05:45
这几天写一段数据迁移脚本,各种bug和闪退,定位以后发现大部分都是NSDictionary取key引发的错误
判断key存在
第一个场景是判断key是否存在,NSDictionary并没有类似containsKey之类的API,网上找到的判断方法,大部分是
if([dict objectForKey:@"xxx"]){ // key存在}
如果一个@{}不包含某个key,那么调用objectForKey会返回nil,就走不进if的分支
判断key对应的value非空
但是这里的NSDictionary是用FMDB返回的结果,可能key是存在的,但是对应的value是null。那么下面的代码:
[[dict objectForKey:@"money"] intValue];
就会闪退,因为虽然money这个KEY存在,但是对应的value是NSNull。恶心的是,用简单的if方法判断不出value是否是NSNull
if([dict objectForKey:@"money"]){ // logic}
因为此时objectForKey方法返回的不是nil,而是NSNull,而NSNull是可以走进if分支的。所以正确的判断应该是:
if(![[dict objectForKey:@"money"] isEqual:[NSNull null]]){ // logic}
反正我是从来没见过别的语言里有这么恶心的非空判断
用category来解决
最后是写了一个NSDictionary的category来解决这个问题,只有当key存在,且key对应的value非空,才返回true
// judge nilif(![dict objectForKey:key]){ return NO;} id obj = [dict objectForKey:key];// judge NSNull return ![obj isEqual:[NSNull null]];
0 0
- NSDictionary判断key存在,且value非空
- NSDictionary 判断空
- php 判断memcache key/value是否存在方法
- php中判断memcache中key,value是否存在
- ios--判断NSDictionary是否包含key(随笔)
- 判断NSDictionary是否包含某个key
- iOS判断NSDictionary中含有某个key
- 判断NSDictionary是否包含某个key
- python3判断字典、列表、元组为空以及字典是否存在某个key的方法
- 判断json是否存在KEY
- 非空判断
- String非空判断
- js非空判断
- List判断非空
- 非空判断注意
- 非空判断
- Java非空判断
- js 非空判断
- 小Q系列故事-屌丝的逆袭(杭电4500)
- 《管理的常识》第一章<什么是管理>读书笔记一
- 是一个温柔而懂得宽容的女孩子
- 如何成为时间管理者,摆脱拖延症!
- CUDA 存储器模型
- NSDictionary判断key存在,且value非空
- FZU 2186 小明的迷宫 (TSP)
- 8. UICollectionView的使用
- 【重构】泛型集合
- 输入一个负整数,并进行逆向显示
- BI—SSIS初步认识
- JAVA编码转换的详细过程
- CUDA 线程同步
- 思想早市-2015年3月22日