Страницы

Поиск по вопросам

пятница, 12 апреля 2019 г.

Как в objective-c передать массив NSString в метод?

В 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.

Комментариев нет:

Отправить комментарий