我在NSDictionary变量中有以下数据:
{
value = "TV-PG";
}
我想知道如何在这里得到关键“值”的值。
我试过了:
NSDictionary *fieldMaturityRating = [[parsedItems objectAtIndex:0] objectForKey:@"field_maturity_rating"];
NSString *dateRelease = [fieldMaturityRating objectForKey:@"value"];
(其中,fieldMaturityRating是具有给定值的NSDictionary) 我得到了:
-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0xd9cd3f0
[10530:707] *** Terminating app due to uncaught exception: -[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0xd9cd3f0
有人可以帮助我吗? 感谢。
注意:如果我暂停执行并在此处显示的第一行代码后执行po
,我会得到以下内容:
(gdb) po fieldMaturityRatingNew
<__NSArrayM 0x79af250>(
{
value = "TV-PG";
}
)
答案 0 :(得分:4)
po
实际上显示了您的问题:
(gdb) po fieldMaturityRatingNew
<__NSArrayM 0x79af250>(
{
value = "TV-PG";
}
)
外部(
和)
表示您的对象实际上是一个数组。
在里面,{
和}
表示您的词典。
所以你真的想要:
NSString *value = [[fieldMaturityRatingNew objectAtIndex:0] objectForKey:@"value"];
答案 1 :(得分:2)
这意味着您的fieldMaturityRating实际上不是NSDictionary。确保您没有将其设置为代码中的某个数组。
修改强>
这意味着您的fieldMaturityRating实际上是一个包含NSDictionary的NSArray。如果这是您想要的数据结构,那么您可以像这样访问您的值。
NSString *dateRelease = [[fieldMaturityRating objectAtIndex:0] objectForKey:@"value"];
我不相信这是您想要的数据结构,因此您应该查看为什么您的parsedItems数组返回NSArray而不是NSDictionary。如果你追踪这个问题,你可以在将来停止任何麻烦。
答案 2 :(得分:2)
您实际上是将NSDictionary消息发送到NSMutableArray实例。
您可能希望再次检查代码,因为objectForKey:
方法在指向NSDictionary时是正确的。
答案 3 :(得分:0)
根据您的数据结构(数组中的字典),date Release应该是这样的
NSString *dateRelease = fieldMaturityRating[0][@"value"];