Как создать "индексы", необходимые для NSIndexPath: indexPathWithIndexes: length:

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

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

Как мы создаем "индексы", необходимые для первого параметра?

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

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

Ответ 1

Вы правы. Вы можете использовать его следующим образом:

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

NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexArr length:4];

Ответ 2

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

+ (NSIndexPath*) indexPathForRow:(NSUInteger)row inSection:(NSUInteger)section

Ответ 3

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

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

Ответ 4

Я сделал это в двух строках кода

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

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