Сокращенное обозначение nsmutablearrays

Я хотел бы использовать цель c сокращения для доступа к вложенным nsmutablearrays.

NSMutableArray *board;
board[0] = [NSMutableArray new];
board[1] = [NSMutableArray new];
board[2] = [NSMutableArray new];
board[0][0] = @"a";
board[0][1] = @"b";
board[0][2] = @"c";
board[1][0] = @"d";
board[1][1] = @"e";
board[1][2] = @"f";
board[2][0] = @"g";
board[2][1] = @"h";
board[2][2] = @"i";
for (int r = 0; r < 3; r++) {
    for (int c = 0; c < 3; c++) {
        NSLog( @"%@", board[r][c]);
   }  
}

дает много нулей. Что я делаю неправильно?

1 ответ

Просто мысль на первый взгляд без какого-либо расследования..

вы не инициализировали первый массив.. также вы, вероятно, должны использовать "массив" для инициализации, а не "новый"

NSMutableArray *board = [NSMutableArray array];
board[0] = [NSMutableArray array];
board[1] = [NSMutableArray array];
board[2] = [NSMutableArray array];
board[0][0] = @"a";
board[0][1] = @"b";
board[0][2] = @"c";
board[1][0] = @"d";
board[1][1] = @"e";
board[1][2] = @"f";
board[2][0] = @"g";
board[2][1] = @"h";
board[2][2] = @"i";
for (int r = 0; r < 3; r++) {
    for (int c = 0; c < 3; c++) {
        NSLog( @"%@", board[r][c]);
   }  
}

Не на 100%, если это решит вашу проблему, я не пытался использовать вложенные массивы в objc, как это раньше.

Вы также можете попробовать

NSMutableArray *board = [NSMutableArray arrayWithCapacity:3]

если это все еще не работает

Другие вопросы по тегам