【问题标题】:Accessing 2D NSMutableArray Objective-C访问 2D NSMutableArray Objective-C
【发布时间】:2012-06-05 21:06:36
【问题描述】:

我目前正在尝试在 2D NSMutableArray 中创建和访问数据。我知道我必须将数组嵌套到数组中。问题是我无法访问不同的一维数组。

这里是初始化二维数组的代码,所有数组都是 NSMuttableArray :

if(simSections == nil  || [simSections count] == 0) {
    simSections = [[NSMutableArray alloc] init];

    for (int i = 0; i < 8 ; i++) {
        simData[i] = [[NSMutableArray alloc] init];
        [simSections addObject:simData[i]];
    }
}

现在我正在尝试在第一个数组的第一个空间中添加对象:

[[simSections objectAtIndex:0] addObject:[NSString stringWithString:@"Test"]];

我收到此错误,但我不明白为什么 simSections 数组会为空,因为我添加了 simData 数组。

* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array”

你有什么想法吗?非常感谢您的帮助,

谢谢。

【问题讨论】:

    标签: objective-c nsmutablearray


    【解决方案1】:

    您填写simSections 的代码对我来说似乎是正确的。那么,我怀疑问题是实际上并没有为当时正在执行[simSections objectAtIndex:0] 的对象调用该代码。

    将日志记录添加到两段代码中。记录 selfsimSections 以确保它们与您期望的对象相同。您可能希望使用“%p”格式说明符而不是“%@”进行记录,因为您实际上只对它们的指针值感兴趣。

    【讨论】:

    • 感谢您的回答,不幸的是,问题似乎并不在这里,因为我在两种方法中记录 simSections 指针时得到以下信息:2012-06-06 10:22:28.158 GlassCockpit [8584:707] arrayAlloc: 0x7c71810 2012-06-06 10:22:38.807 GlassCockpit[8584:707] udp: 0x7c71810
    • 好的。出于好奇,您的 sn-p 中的 simData 是什么?本地人,伊瓦尔人,...?也显示它的声明。同时显示simSections 的声明。顺便问一下,这是使用 ARC 吗?
    • simData 在实例变量中,声明如下:“NSMutableArray *simData [100];”。对于同样是 ivar 的 simSections:“NSMutableArray *simSections;”。该项目未使用 ARC。
    • 我很难过。您可能需要为您的问题添加更多上下文。显示这些代码 sn-ps 出现的方法并解释它们何时被调用。坦率地说,您可能需要显示所有涉及simSectionssimData 的代码。顺便说一句,你为什么使用simData 数组? simSections 似乎是多余的。
    • 我实际上退出了这个,我会做一些其他的工作,使用多个 1D 阵列更容易。正如您所提到的,我真的不需要 simData 数组。感谢您的帮助。
    【解决方案2】:

    检查您的 simSections 数组。好像是空的

    【讨论】:

    • 但如果我执行以下操作“[simSections addObject:simData[i]];”它不会是非空的吗?
    • 签入调试器,在此调用之前您的数组包含所有对象
    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    相关资源
    最近更新 更多