如何在 Objective C 中构建一个多维对象数组

3

可能是重复问题:
如何创建多维数组?

我刚开始学习编程和Objective-C,虽然我在这里找到了一些讨论多维数组的问题,但我还不太明白我需要做什么才能构建和使用自己的多维数组。

我需要创建一个有16行和3列的数组。该数组需要接受字符串对象。我不知道如何创建、填充或访问其内容。是否有人可以友好地为我解释一下?


固定大小为16x3还是在一个方向或两个方向上动态扩展?这只是出于专业好奇,你到底为什么需要多维数组呢? - slf
我正在制作一个井字棋游戏,并跟踪每个玩家的所有可能移动。 - jac300
这个大小是固定的,因为我还不确定如何处理动态扩展的大小。 - jac300
有了固定的大小,为什么不只使用一个单一的、不可变的数组呢?我认为没有必要使用多维数组,或者是我漏掉了什么吗? - slf
致Zoul:对于重复的问题,我表示歉意。我查看了你提到的一些重复问题,但这些问题对我来说并没有意义。请理解,作为一个初学者,即使是相同的主题,也很难将别人的特定问题应用到自己的问题上。 - jac300
给slf:感谢你提供的意见。我认为通过为每一列、行等单独创建一个数组,可以更容易地跟踪数据的流向,但或许将它们合并到一个数组中尝试一下也是值得的。 - jac300
1个回答

10

我建议您使用C数组,因为NSArray不支持多维。您可以像这样声明所描述的数组:

NSString *stringArray[16][3];

设置和访问该数组中的任何字符串非常简单:

stringArray[7][1] = @"Stringstringstring";

NSString *string = stringArray[3][0];

不过,你可以使用NSArray(或NSMutableArray),但那样会稍微缺乏优雅:

NSArray *stringArray = [NSArray arrayWithObjects:
                        [NSMutableArray array],
                        [NSMutableArray array],
                        [NSMutableArray array], nil];

这三个NSMutableArray将成为您的二维数组的三列。

编辑

使用NSArray,使用循环填充可能更容易:

NSMutableArray *stringArray = [NSMutableArray array];

for (int column = 0; column < 3; column++)
{
    NSMutableArray *columnArray = [NSMutableArray array];

    for (int row = 0; row < 16; row++)
        [columnArray addObject:[NSString stringWithFormat:@"Row %i, column %i", row, column]];

    [stringArray addObject:columnArray];
}

非常好,谢谢。顺便问一下,有没有办法一次将一个对象添加到多个单元格中?就像这样:'stringArray[7][1],[3][4] = @"stringObject";' 还是我必须为每个单元格编写单独的语句? - jac300
你需要为每个语句编写单独的声明。 - Tim Vermeulen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接