我一直在向nsdictionary添加键值对,如此
NSDictionary *dict = @{key1:value1, key2:value2};
如果找不到value1,则应用程序崩溃。所以,我实现了另一种方式
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:value1,key1,value2,key2,nil];
在这种情况下,如果找不到value1,则dict不会更进一步,并且没有key2。解决方案是什么?
答案 0 :(得分:2)
NSDictionary
(以及NSArray
)无法存储nil
,因为他们需要一个对象。
解决方案是使用NSNull或根本不存储值。在后一种情况下,objectForKey:
方法如果找不到给定键的值,则返回nil
。
在第二个代码示例中,它不会更进一步的问题是此方法需要nil
- 终止列表,因此它只会在第一个nil处停止,因为它认为这是结束。
您可以使用setValue:forKey:
,如果值为nil
,则只删除密钥的值。见here。但是因此它需要是一个可变数组,你必须逐个遍历所有值。
另一种解决方案是使用支票来保护每个价值,例如:如图所示here。
答案 1 :(得分:-1)
我找到了解决方案
NSMutableDictionary *dict2 = [NSMutableDictionary dictionary];
[dict2 setValue:value1 forKey:key1];
[dict2 setValue:value2 forKey:key2];
[dict2 setValue:value3 forKey:key3];
NSLog(@"dict2 - %@",dict2);
像魅力一样工作!!!