В objective-c мне необходимо передать в метод двумерный массив NSString. Я его объявляю NSString *products[10][10];, потом присваиваю какие-то значения, и не могу написать метод, чтобы он принимал его.
Компилятор не пропускает такие объявления:
-(void) Array : (NSString *) array[][];
-(void) Array : (NSSting[][] *) array;
А так же охота, чтобы метод возвращал двумерный массив NSString. Т.е. такое тоже не проходит:
-(NSString[][] *) ArrayCount : (int) count;
Помогите, пожалуйста! Как правильно писать такие методы, которые бы принимали и возвращали двумерный массив NSString? Или такое вообще не возможно?
Ответ
Традиционно в ObjC нет двумерных массивов — вместо них используется такое понятие как "массив массивов". То есть массив, каждым элементом которого является другой массив.
Объявить его можно либо:
NSArray *row1 = @[@"string1", @"string2"];
NSArray *row2 = @[@"string3", @"string4"];
NSArray *container = @[row1, row2];
либо:
NSArray *container = @[@[@"string1", @"string2"],
@[@"string3", @"string4"]];
и далее вы передаёте в метод массив container
Чтобы получить элемент из массива:
container[0][0];
Так же надо добавить, что поскольку ObjC основан на C, любой C-код будет работать, включая 2D массивы, но тогда и те методы, куда эти массивы передаются надо писать на C.
Комментариев нет:
Отправить комментарий