1

可能重复:
如果键启动 @ 符号,则在 NSDictionary 上使用 valueForKeyPath?

错误:

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:@"@"]

即使定义了“@”键,它仍然会导致SIGABRT

NSDictionary *dict = @{ @"@": @"at-sign" };
NSLog(@"@=%@", [dict valueForKey:@"@"]); // SIGABRT

为什么会发生这种情况,如何从字典中检索“@”键的值?

4

1 回答 1

5

你应该objectForKey:在尝试访问字典中的对象时使用,valueForKey:andvalueForKeyPath:方法适用于 KVC,并且对它们的命名有一些限制。使用[dict objectForKey:@"@"]将工作并返回(null)或返回at-sign您的示例。

于 2012-08-04T22:09:05.177 回答