2011-05-07 21 views
6

Tengo un NSArray con NSIndexPaths dentro de ella¿Cómo puedo obtener los valores específicos de una NSIndexPath

NSArray *array = [self.tableView indexPathsForSelectedRows]; 

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

El NSLog vuelve este:

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

Estoy tratando de obtener el segundo valor de la indexPath en apenas una llanura NSInteger

+1

¿Es este realmente su código? ¿Estás usando una subclase de vista de tabla personalizada? No creo que haya un método llamado 'indexPathsForSelectedRows'. Tampoco puede asignar una instancia 'NSIndexPath' a un puntero' NSArray'. –

+1

Apple tiene métodos no documentados para multiselección en una UITableView (como la aplicación de correo) que es donde indexPathsForSelectedRows proviene de – Heli0s

+1

¡A partir de iOS 5 este código es 100% seguro para la tienda de aplicaciones! (no es que me importe, soy un infierno post-SDK) – lol

Respuesta

10

puede utilizar NSIndexPath 's -indexAtPosition: método para obtener el último índice:

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

En su caso, puede utilizar el siguiente (como Josh mencionó en su comentario, estoy asumiendo que usted está trabajando con una subclase personalizada de UITableView, porque no tiene ese método específico (-indexPathsForSelectedRows:)):

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

que imprimirá a cabo 0, 1, 2, ....

+0

También puede hacer 'path.row' para obtener el valor en el índice – Dean

Cuestiones relacionadas