首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nsdictionary问题

nsdictionary问题
EN

Stack Overflow用户
提问于 2012-02-11 06:48:03
回答 4查看 942关注 0票数 1

我在一个NSDictionary变量中有以下数据:

代码语言:javascript
复制
{
    value = "TV-PG";
}

我想知道如何在这里获取键" value“的值。

我试过了:

代码语言:javascript
复制
        NSDictionary *fieldMaturityRating = [[parsedItems objectAtIndex:0] objectForKey:@"field_maturity_rating"];

        NSString *dateRelease = [fieldMaturityRating objectForKey:@"value"];

(其中,fieldMaturityRating是具有给定值的NSDictionary ),我得到:

代码语言:javascript
复制
-[__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,我会得到以下结果:

代码语言:javascript
复制
(gdb) po fieldMaturityRatingNew
<__NSArrayM 0x79af250>( 
{
    value = "TV-PG";
}
)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-11 07:21:03

po实际上显示了您的问题:

代码语言:javascript
复制
(gdb) po fieldMaturityRatingNew
<__NSArrayM 0x79af250>( 
{
    value = "TV-PG";
}
)

外部的()表示您的对象实际上是一个数组。

里面是{}表示字典的地方。

所以你真的想:

代码语言:javascript
复制
NSString *value = [[fieldMaturityRatingNew objectAtIndex:0] objectForKey:@"value"];
票数 4
EN

Stack Overflow用户

发布于 2012-02-11 06:51:05

这意味着您的fieldMaturityRating实际上不是一个NSDictionary。确保您没有在代码中的某个位置将其设置为数组。

编辑:

这意味着您的fieldMaturityRating实际上是一个包含NSDictionary的NSArray。如果这是你想要的数据结构,那么你可以像这样访问你的值。

代码语言:javascript
复制
NSString *dateRelease = [[fieldMaturityRating objectAtIndex:0] objectForKey:@"value"];

我认为这不是您想要的数据结构,所以您应该调查一下为什么parsedItems数组返回NSArray而不是NSDictionary。如果你追踪到这个问题,你就可以在未来停止任何令人头疼的事情。

票数 2
EN

Stack Overflow用户

发布于 2012-02-11 06:52:41

您实际上是在向NSMutableArray实例发送该NSDictionary消息。

您可能希望再次检查代码,因为在指向NSDictionary时,objectForKey:方法是正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9235898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档