Pregunta

Rápido. Estoy pasando por alto algo ...

Tengo una vista de tabla agrupada que se construye a partir de matrices en un NSDictionary. Cada conjunto es una sección de la tabla. Cuando está en modo de edición y un usuario hace clic en "Eliminar" Llamo

- (void)removeObject:(MyClass *)myObject 

¿cómo puedo determinar qué matriz enviar el mensaje [myArray removeObject: myObject]? NSDictionary no tiene un método indexOfObject: pero NSArray sí. Supongo que podría recorrer cada matriz en busca de dicho objeto, pero eso no parece correcto.

¿Alguien puede sacudir mi cerebro por favor? gracias!

¿Fue útil?

Solución

Puede implementar los protocolos estándar UITableView y utilizar este método:

(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle<br> forRowAtIndexPath:(NSIndexPath *)indexPath {
     <br><br>//check the section according to your array, if(indexPath.section ==....
     <br><br>
    if(editingStyle == UITableViewCellEditingStyleDelete) {
     <br>
    [arrayFoundBefore removeObjectAtIndex:indexPath.row];
    <br> 
    }
    <br>}

Creo que esa es la forma de hacerlo, aunque no estoy seguro. ¿Alguien puede aclarar?

Otros consejos

Debe saber qué tableView envió el mensaje (porque el método en cuestión está en el delegado para ese objeto) y, por lo tanto, puede crear la matriz en el método viewDidLoad en el delegado tableView o, alternativamente, averiguar cuál es se basa en el contexto del delegado.

No veo nada obviamente malo en iterar a través de las matrices. ¿Con qué frecuencia las personas eliminan cosas, y los diccionarios son realmente lo suficientemente grandes como para hacer que esto sea una sobrecarga significativa?

Como punto de referencia, el método indexOfObject: de NSArray no hace nada más elegante que iterar a través de la matriz en busca de un objeto coincidente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top