Как создать «индексы», необходимые для NSIndexPath: indexPathWithIndexes: length: - PullRequest
42 голосов
/ 08 октября 2008

Метод класса для создания пути индекса с одним или несколькими узлами:

+ (id)indexPathWithIndexes:(NSUInteger *)indexes length:(NSUInteger)length

Как нам создать «индексы», требуемые в первом параметре?

Документация перечислила его как Массив индексов для составления пути индекса , но он ожидает (NSUinteger *).

Чтобы создать индексный путь 1.2.3.4, это просто массив [1,2,3,4]?

Ответы [ 4 ]

61 голосов
/ 08 октября 2008

Вы правы. Вы можете использовать это так:

NSUInteger indexArr[] = {1,2,3,4};

NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexArr length:4];
44 голосов
/ 06 мая 2009

В iOS вы также можете использовать этот метод из NSIndexPath UIKit Дополнения (объявлено в UITableView.h):

+ (NSIndexPath*) indexPathForRow:(NSUInteger)row inSection:(NSUInteger)section
7 голосов
/ 08 октября 2008

Ваше предположение верно. Это так же просто, как массив C NSUInteger. Параметр длины - это количество элементов в массиве индексов.

Массивы в C часто идентифицируются как указатель (в данном случае NSUInteger *) с параметром длины или известным терминатором, например \ 0 для строк C (который является просто массивом символов).

4 голосов
/ 10 сентября 2015

Я сделал это в 2 строки кода

 NSMutableArray *indexPaths = [[NSMutableArray alloc] init];   
 for (int i = firstIndexYouWant; i < totalIndexPathsYouWant; i++) [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];

Короткий, чистый и читаемый. Бесплатный код, не стучите по нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...