【问题标题】:How to refer to an object in a NSDictionary that is in a NSArray如何在 NSDictionary 中引用 NSArray 中的对象
【发布时间】:2011-08-15 14:08:25
【问题描述】:

当我 NSLog 数组时,我得到这个:

(
    {
        content = "content a";
        id = 452069;
        timestamp = 1313341470;
    },
        {
        content = "content b";
        id = 451498;
        timestamp = 1313261505;
    },
    etc...
)

您如何引用特定索引?例如,您将如何获取第二个索引的内容。

我尝试过[[myArray objectAtIndex:1]objectForKey:@"content"],但这会使程序崩溃。

同时执行 [myArray objectAtIndex:1] 也会使程序崩溃。

【问题讨论】:

  • 请发布日志中有关崩溃的任何详细信息。
  • 调试控制台中没有错误,并且在文件 main.m 中显示“线程 1:程序接收信号:EXC_BAD_ACCESS”。
  • 您的数组可能包含过度释放的对象。启用僵尸,然后发布您可能找到的任何其他详细信息。 stackoverflow.com/questions/2190227/…
  • 我添加了一个可能对您有所帮助的答案,如果您仍需要进一步的帮助,您需要在创建和设置数组的位置发布一些代码。

标签: iphone objective-c ios xcode nsarray


【解决方案1】:

根据您的编辑,您的阵列可能已过度释放。确保正确保留您的数组,如果它使用属性,请确保该属性设置为copyretain,如果您在内部设置它,请确保使用self.myArray = ...; 而不是myArray = ...'

【讨论】:

  • 谢谢,这就是问题所在。我错误地在代码中进一步释放了数组对象。
【解决方案2】:

你试过-valueForKey:吗?该索引处的项目不是对象而是值。

【讨论】:

  • 根据问题,数组看起来包含字典,因此objectForKey 是访问该值的正确方法。没有提供足够的信息来完全回答这个问题。 (存储在 NSArray 或 NSDictionary 中的任何内容都必须是对象)
  • 他正在访问一个字典数组。他正在选择数组 objectAtIndex(字典),然后是项目的值。虽然它仍然是一个对象,但他需要选择它的值才能使其有用。
  • valueForKey:objectForKey: 与字典的唯一区别是 valueForKey: 限制您只能使用 NSString 键。这个答案只是不回答 OP 问题,仅此而已,没有否决票或任何让您知道的事情。
  • 是的,你是对的。不知道 valueForKey 仅限于 NSString。感谢您的提醒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 2014-09-01
  • 2012-05-17
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
相关资源
最近更新 更多