iPhone SDK 2d int数组

时间:2012-01-22 22:45:40

标签: iphone c++ objective-c arrays multidimensional-array

我正在尝试在objective-c中创建一个二维数组,我真的不想使用NSArray,因为我正在使用int而且代码会烦人:{[array objectAtIndex:x] objectAtIndex:y],更不用说了我必须将数字从NSNumber转换回来......似乎还有很多额外的工作。

我不能做以下事情吗?

// .h file
int aTiles[10][2];

// .m file
aTiles = {
        { 0,  0}, // 0
        { 0,  1}, // 1
        { 1,  5}, // 2
        { 0,  0}, // 3
        { 0,  0}, // 4
        { 0,  0}, // 5
};

它在同一行(int a[x][x] = {...};)中一起工作,但我需要将该数组公开,以便我可以从任何函数访问它。

第二行表示期待分号。

由于

4 个答案:

答案 0 :(得分:0)

在// 5

附近看起来有一个额外的逗号

您是否需要为aTiles声明类型?

 int aTiles = ...

答案 1 :(得分:0)

由于这也被标记为C ++,您可以使用ivar:

std::vector<std::vector<int> > tiles;

然后你只需在对象的初始值设定项中调整大小并设置初始元素值。

否则,这是全球还是伊娃?它应该是常数还是可变的?

答案 2 :(得分:0)

当我尝试原始代码时,我遇到了稍微不同的错误,但这很有效:

// .h file
extern int aTiles[10][2];

// .m file
int aTiles[10][2] = {
        { 0,  0}, // 0
        { 0,  1}, // 1
        { 1,  5}, // 2
        { 0,  0}, // 3
        { 0,  0}, // 4
        { 0,  0}, // 5
};

答案 3 :(得分:0)

这太棒了......(不是真的)

// .h
int aTiles[10][2];

// .m
int a[10][2] = {
        { 0,  0}, // 0
        { 0,  1}, // 1
        { 1,  5}, // 2
        { 0,  0}, // 3
        { 0,  0}, // 4
        { 0,  0}, // 5
};

for (int r = 0; r <= 5; r++) {
   for (int c = 0; c < 2; c++) {
      aTiles[r][c] = a[r][c];
   }
}

绝对是一种解决方法,但是......无法想出任何其他方式。如果有人想出正确的方法,请告诉我:P