当我在键中使用@符号进行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会吓坏我?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)