nsdictionary问题

时间:2012-02-10 22:48:03

标签: objective-c ios nsdictionary

我在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";
}
)

4 个答案:

答案 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"];