我正在尝试在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] = {...};
)中一起工作,但我需要将该数组公开,以便我可以从任何函数访问它。
第二行表示期待分号。
由于
答案 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