【发布时间】:2012-10-28 23:35:57
【问题描述】:
我正在尝试在名为“robotDesign”的以下 NSDictionary 中获取“@type”键的值
robotDesign : {
"@id" = "2";
"@type" = "piggyDash";
turnAngle = "-90";
width = "90.0";
}
这是我使用的 JSON 对象的一部分
[NSJSONSerialization JSONObjectWithData: options: error:];
我正在使用以下代码提取@type 值
NSString * robot_type = (NSString*)[robotDesign valueForKey:@"@type"];
但收到以下错误:
由于未捕获的异常“NSUnknownKeyException”而终止应用程序, 原因:'[<__nscfdictionary> valueForUndefinedKey:]: 这个 类不符合键类型的键值编码。'
注意:请注意,字典中的其他对象,如“turnAngle”和“width”,可以使用上面给出的相同代码轻松提取,但使用它们各自的键。
【问题讨论】:
-
这就是为什么使用 valueForKey 而不是 objectForKey 是愚蠢的。最好的情况是,valueForKey 花费了无用的时间来确定它可以调用 objectForKey。最坏的情况,你得到垃圾。例如 valueForKey:@"@count" 将为您提供字典中键/值对的数量。
标签: objective-c ios cocoa-touch nsstring nsdictionary