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

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

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

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

В документации это указано как Массив индексов, составляющих индексный путь, но ожидается (NSUinteger *).

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
42
0
43 706
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

Ответ принят как подходящий

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

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

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

извините за вопрос новичка: мне нужно [indexSet release] после использования?

Steve 25.01.2010 11:04

@ Стив Не в этом случае. Вы найдете ответ на все вопросы управления памятью, связанные с Какао, в Руководстве по программированию управления памятью для Какао (developer.apple.com/mac/library/documentation/cocoa/Concept‌ ual /…). Поскольку indexPathWithIndexes:length не имеет «new», «copy» или «alloc» в селекторе, правила Какао указывают, что он возвращает автоматически выпущенный экземпляр.

Barry Wark 25.01.2010 20:44

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

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

Ага! Документация (своего рода) для "недокументированного API", о котором я спрашивал в другом вопросе. Спасибо! :)

Olie 26.03.2010 04:21

он очень хорошо задокументирован: developer.apple.com/iphone/library/documentation/uikit/…, однако доступен только на iphone (UIKit).

Intentss 23.05.2010 04:46

Этот метод объявлен в NSIndexPath, а не в UITableView.

Matjan 12.03.2013 01:03

Вышеупомянутый метод идентичен следующему коду: NSUInteger indexes[] = {section, row}; [NSIndexPath indexPathWithIndexes:indexes length:2]; (Если вы ориентируетесь как на платформы iOS, так и на Mac, расширения NSIndexPath UIKit недоступны, поэтому вам нужно будет использовать этот подход вместо этого.)

smileyborg 22.11.2013 00:12

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

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

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

я разобью вторую строчку на несколько, поранишь глаза

Yuchen Zhong 23.09.2016 23:20

Другие вопросы по теме