web-dev-qa-db-fra.com

Comment créer les "index" requis pour NSIndexPath: indexPathWithIndexes: longueur:

La méthode de classe pour créer un chemin d'index avec un ou plusieurs nœuds est la suivante:

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

Comment créer les "index" requis dans le premier paramètre?

La documentation l'a répertorié comme Tableau d'index pour constituer le chemin d'index mais il attend un (NSUinteger *).

Pour créer un chemin d'index de 1.2.3.4, s'agit-il simplement d'un tableau de [1,2,3,4]?

42
Ronnie Liew

Vous avez raison. Vous pouvez l'utiliser comme ceci:

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

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

Sur iOS, vous pouvez également utiliser cette méthode à partir de NSIndexPath UIKit Additions (déclaré dans UITableView.h):

+ (NSIndexPath*) indexPathForRow:(NSUInteger)row inSection:(NSUInteger)section
44
Alpar Katona

Votre hypothèse est correcte. C'est aussi simple qu'un tableau C de NSUInteger. Le paramètre de longueur est le nombre d'éléments dans le tableau d'index.

Les tableaux en C sont souvent identifiés comme un pointeur (dans ce cas NSUInteger *) avec un paramètre de longueur ou un terminateur connu tel que\0 pour les chaînes C (qui n'est qu'un tableau de caractères).

7
Giao

Je l'ai fait en 2 lignes de code

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

Court, propre et lisible. Code libre, ne le frappez pas.

4
jungledev