预期表达式错误目标c

时间:2013-11-20 13:53:41

标签: objective-c arrays

我有一大堆代码因为预期的表达式错误而无法正常工作。

NSMutableArray *worldData =[[NSMutableArray alloc] initWithArray:@[

                        @[ @1, @2, @3, @4,@5,@6],
                        @[ @1, @2, @3, @4,@5,@6],
                        @[ @1, @2, @3, @4,@5,@6],
                        @[ @1, @2, @3, @4,@5,@6],

                        ]];
int *x = 1;

if ( int 1 == (worldData objectAtIndex:1)){

    UIImage *block31 = [UIImage imageNamed:
                      @"grass2.png"];
}

}

3 个答案:

答案 0 :(得分:1)

我不知道这应该是什么:

int *x = 1;

if ( int 1 == (worldData objectAtIndex:1)){

我想你可能意味着:

if ([[[worldData objectAtIndex:1] objectAtIndex:1] intValue] == 1)

或更简洁地说,您可以使用下标和文字:

if ([worldData[1][1]  isEqual: @1])

答案 1 :(得分:1)

你不需要在if块中声明int。只需重写为:

if ( 1 == [[[worldData objectAtIndex:1] objectAtIndex:1] intValue]){

答案 2 :(得分:0)

int *x = 1;

创建指针以存储变量的地址。

它应该是这样的:

int num = 1;
int *x = #

另一个问题:

if ( int 1 == (worldData objectAtIndex:1)){ 

以上是毫无意义的。

当您将NSNumber值与int进行比较时。要么将一个类型转换为NSNumber,要么将另一个转换为intValue。

if ( [@1 isEqual: worldData[1]]) //[worldData objectAtIndex:1]

if (1 == [worldData[1] intValue])

您正试图通过[worldData objectAtIndex:]访问整个阵列。所以你不能用整数来比较它们。你需要另一个数组,或者你需要再次进入数组的第二维。

[[worldData objectAtIndex:] objectAtIndex:]

或,

worldData[row][col]