objective-c – 当我们的密钥中有@符号时,为什么NSDictionary会吓坏我?

objective-c – 当我们的密钥中有@符号时,为什么NSDictionary会吓坏我?,第1张

概述参见英文答案 > Error getting valueForKey in an NSDictionary for key containing @ character                                    2个 当我在键中使用@符号进行JSON响应时,我遇到了RestKit的问题.经过一些调试后,问题似乎发生在__NSCFDictionary中 所以我尝试了以下简 参见英文答案 > Error getting valueForKey in an NSDictionary for key containing @ character                                    2个
当我在键中使用@符号进行JsON响应时,我遇到了RestKit的问题.经过一些调试后,问题似乎发生在__NSCFDictionary中

所以我尝试了以下简单的代码:

NSArray *keys = [NSArray arrayWithObjects:@"@key1",@"@key2",nil];NSArray *objects = [NSArray arrayWithObjects:@"value1",@"value2",nil];NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects                                                   forKeys:keys];for (ID key in dictionary) {    NSLog(@"key: %@,value: %@",key,[dictionary valueForKey:key]);}

我收到以下错误:

[<__NSDictionaryI 0x618000268ac0> valueForUndefinedKey:]: this class
is not key value Coding-compliant for the key key1.

有人可以解释为什么我收到此错误,如果有任何解决方法?

解决方法 你不能在键中使用@和valueForKey:.在这种情况下NSDictionary has some documented but perhaps unexpected behavior:它剥离@并使用新密钥调用[super valueForKey:].这会查找对象上的键,而不是字典中的内容. NSDictionary的实例上不存在这样的键,因此引发了异常.

您通常应该使用objectForKey:从NSDictionary中检索值.

信用证必须转到肯托马斯的下面的评论,纠正这个答案的早期版本.

总结

以上是内存溢出为你收集整理的objective-c – 当我们的密钥中有@符号时,为什么NSDictionary会吓坏我?全部内容,希望文章能够帮你解决objective-c – 当我们的密钥中有@符号时,为什么NSDictionary会吓坏我?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存