如何使用nil元素创建二维数组

时间:2014-04-06 17:22:43

标签: ios multidimensional-array nsmutablearray nsarray null

在国际象棋比赛中,我想使用二维阵列来追踪棋盘上棋子的位置。

最初,我想创建一个NSMuteableArray并通过nil指示未占用的广场。占用的槽应该有一个指向Piece对象的指针......

但是以下代码:

NSMutableArray* _board;
...

_board = [[NSMutableArray alloc] init];
for (int i = 0; i < 8; i++) {
    NSMutableArray *row = [[NSMutableArray alloc] init];
    for (int j = 0; j < 8; j++) {
        [row addObject:nil];
    }
    [_board addObject:row];
}

因运行时错误而失败:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

所以nil不能作为参数传递给addObject ......而是在这里做什么呢?

1 个答案:

答案 0 :(得分:2)

尝试

NSMutableArray* _board;
...

_board = [[NSMutableArray alloc] init];
for (int i = 0; i < 8; i++) {
    NSMutableArray *row = [[NSMutableArray alloc] init];
    for (int j = 0; j < 8; j++) {
        [row addObject:[NSNull null]];
    }
    [_board addObject:row];
}

可以看到使用[NSNull null]代替nil的原因here