可能重复:
Using valueForKeyPath on NSDictionary if a key starts the @ symbol?
错误:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[<__NSDictionaryI 0x100110e00> valueForUndefinedKey:]:
this class is not key value coding-compliant for the key .'
示例代码:
NSDictionary *dict = @{ @"foo": @"bar" };
NSLog(@"foo=%@, qaz=%@", [dict valueForKey:@"foo"], [dict valueForKey:@"qaz"]);
NSLog(@"@=%@", [dict valueForKey:@"@"]); // SIGABRT
使用 [dict objectForKey:@"@"]
。
即使是&#34; @&#34;键定义它仍然导致SIGABRT
:
NSDictionary *dict = @{ @"@": @"at-sign" };
NSLog(@"@=%@", [dict valueForKey:@"@"]); // SIGABRT
为什么会发生这种情况?如何检索&#34; @&#34;字典中的密钥?
答案 0 :(得分:5)
在尝试访问字典中的对象时,您应该使用objectForKey:
,valueForKey:
和valueForKeyPath:
方法适用于KVC,并且对其命名有一些限制。使用[dict objectForKey:@"@"]
可以使用(null)
或at-sign
作为示例。