Я новичок в Objective-C и пытаюсь найти наиболее удобный способ работы с многомерными массивами в Objective-C.Либо я что-то упускаю, либо с ними очень некрасиво работать.
Допустим, у нас классическая проблема:
- чтение ввода из файла;в первой строке через пробел ("") - ширина и высота матрицы (например:
3 4
) - , в следующих строках - содержимое, описанное вышеуказанными значениями
Например:
3 4
a b c d
e f g h
i j k l
Первое решение, о котором я подумал, было:
NSMutableArray *matrix = [[NSMutableArray alloc] initWithCapacity: x]; //x = 3 in this specific case
NSMutableArray *cell;
for(cell in matrix)
{
cell = [NSMutableArray initWithCapacity: y];
for(int i = 0; i < y; i++) // y = 4
{
//object is a NSString containing the char[i][j] read from the file
[cell insertObject:object atIndex: i];
}
}
Это было первое, что я имел в виду, когда думал о том, как мне получить свойЗначения читаются из файла в многомерном массиве.Я знаю, что вы можете использовать массивы C, но, поскольку я буду хранить в них NSObject, я не думаю, что это отличная идея.Тем не менее, с моей точки зрения, легко работать с массивами C, а не с решением, которое я получил с Objective-C.
Есть ли другой способ, которым вы могли бы создать многомерный массив в obj-c и проще, чем приведенный выше??
Как насчет их зацикливания?Я знаю, что могу сделать что-то вроде
NSArray *myArray;
for(int i=0; i < [array count]; i++)
{
[myArray arrayWithArray: [array objectAtIndex: i]];
for(int j=0; j < [myArray count]; j++)
{
NSLog(@"array cell [%d,%d]: %s", i, i, [myArray objectAtIndex: j]);
}
}
Но это все же сложнее, чем ваш средний цикл многомерного массива C.
Есть мысли по этому поводу?