2011-05-07 8 views
6

Ho un NSArray con NSIndexPaths all'interno di essoCome faccio ad avere valori specifici da un NSIndexPath

NSArray *array = [self.tableView indexPathsForSelectedRows]; 

for (int i = 0; i < [array count]; i++) { 
    NSLog(@"%@",[array objectAtIndex:i]); 
} 

Il NSLog restituisce questo:

<NSIndexPath 0x5772fc0> 2 indexes [0, 0] 
<NSIndexPath 0x577cfa0> 2 indexes [0, 1] 
<NSIndexPath 0x577dfa0> 2 indexes [0, 2] 

Sto cercando di ottenere il secondo valore dal indexPath in appena una pianura NSInteger

+1

Questo è veramente il tuo codice? Stai utilizzando una sottoclasse di visualizzazione tabella personalizzata? Non penso ci sia un metodo chiamato 'indexPathsForSelectedRows'. Non puoi semplicemente assegnare un'istanza 'NSIndexPath' a un puntatore' NSArray'. –

+1

Apple ha metodi non documentati per la multiselection in un UITableView (come l'app di posta) che è dove indexPathsForSelectedRows proviene da – Heli0s

+1

A partire da iOS 5 questo codice è sicuro al 100% per l'app store! (non che mi interessi, sono un inferno post-SDK) – lol

risposta

10

È possibile utilizzare NSIndexPath s' -indexAtPosition: metodo per ottenere l'ultimo indice:

NSIndexPath *path = ...; // Initialize the path. 
NSUInteger lastIndex = [path indexAtPosition:[path length] - 1]; // Gets you the '2' in [0, 2] 

Nel tuo caso, è possibile utilizzare il seguente (come Josh menzionato nel suo commento, sto supponendo che si sta lavorando con una sottoclasse personalizzata di UITableView, perché non ha quel metodo specifico (-indexPathsForSelectedRows:)):

NSArray *indexes = [self.tableView indexPathsForSelectedRows]; 
for (NSIndexPath *path in indexes) { 
    NSUInteger index = [path indexAtPosition:[path length] - 1]; 
    NSLog(@"%lu", index); 
} 

che stamperà fuori 0, 1, 2, ....

+0

Puoi anche fare 'path.row' per ottenere il valore nell'indice – Dean