NSDictionary初始化的坑
来源:互联网 发布:虚拟光盘软件下载 编辑:程序博客网 时间:2024/05/22 08:19
- 错误提示
由于在NSDictionary初始化的时候跳坑,
错误原因
_dic = [NSMutableDictionary dictionaryWithDictionary:@{
@”fimg”: @”img” ,
@”fnick”:@”name”,
@”star”:@”star”,
@”g1”:@”g1”,
@”g2”:@”g2”,
@”g3”:@”g3”,
}];
我把字典赋值给字典是利用初始化 (方法2),转用(方法1)后,编辑成功:
_dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@”fimg”: @”img” ,
@”fnick”:@”name”,
@”star”:@”star”,
@”g1”:@”g1”,
@”g2”:@”g2”,
@”g3”:@”g3”,
nil];错误分析
NSDictionary初始化
Objective-C中,NSDictionary初始化的方法有很多种
方法1: [NSDictionary dictionaryWithObjectsAndKeys:<#(id), …#>, nil]
方法2: NSDictionary *dic = @{@”key”:value}
坑在哪里?
坑就在第二种初始化方法 NSDictionary *dic = @{@”key”:value}
它到底是如何坑的呢?
如果你的value是为nil 必将引发崩溃:
‘NSInvalidArgumentException’, reason: ‘* -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]
意思就是说使用[__NSPlaceholderDictionary initWithObjects:forKeys:count:]这个初始化方法,发现keys count和objcects的个数不匹配了
如何规避?
在使用@{@”key”:value} 这种方式初始化的时候,一定要对value做是否为nil的判断,为nil就不要加入Dictionary
或
使用标准的初始化方法:
NSDictionary dictionaryWithObjectsAndKeys:value1,@”v1”,value2,@”v2”,value3,@”v3”, nil];
或
其它的几个初始化方法进行初始化,这样如果value为nil就不会加入字典,使用 objectForKey:取出来的对象就会为nil对象,不会引发崩溃。
关联:
使用@[]方法初始化NSArray也有此坑,规避方法同字典一样
- NSDictionary初始化的坑
- NSDictionary初始化的坑
- NSDictionary初始化的坑
- iOS开发 NSDictionary初始化的坑
- NSArray和NSDictionary的简单初始化
- iOS--NSDictionary字典的初始化增删
- OC中的NSDictionary初始化
- iOS NSDictionary初始化问题
- nil指针对NSDictionary及NSArray初始化的影响
- iOS -- NSDictionary 两种初始化方式的区别
- iOS NSDictionary及NSArray初始化后nil指针的影响
- 【OC学习-19】NSDictionary字典对象的初始化以及常用操作方法归纳
- Foundation框架(9)——NSDictionary的初始化、用法、遍历、内存管理
- ios NSNumber NSArray NSDictionary 初始化简写
- 多层NSDictionary 的读取
- NSDictionary 的用法
- NSDictionary的遍历
- NSDictionary 的用法
- Android中的蓝牙知识
- Write Tests for People
- 个人对泛型Class<T>的理解
- Block介绍(四)解开神秘面纱(下)
- static修饰符
- NSDictionary初始化的坑
- swift (一)
- IOS UITableView 使用总结
- Android 顶部灰条标题栏不显示的方法
- You Gotta Care About the Code
- 图的深度优先遍历 DFS
- 说说React,Flux,Reray和GraghQL
- 9个常见的Android开发错误及解决办法
- HSL和HSV色彩空间