Elimina l'oggetto dall'array in NSTableView
-
06-07-2019 - |
Domanda
Uno veloce. Sto trascurando qualcosa ...
Ho una vista tabella raggruppata creata da array in un NSDictionary. Ogni array è una sezione della tabella. In modalità di modifica e un utente fa clic su " elimina " Chiamo
- (void)removeObject:(MyClass *)myObject
come posso determinare quale array inviare il messaggio [myArray removeObject: myObject]? NSDictionary non ha un metodo indexOfObject: ma NSArray ha. Suppongo che potrei scorrere ogni array alla ricerca di detto oggetto, ma ciò non sembra giusto.
Qualcuno può scuotere il cervello per favore?!? thx!
Soluzione
È possibile implementare i protocolli UITableView standard e utilizzare questo metodo:
(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>}
Penso che sia il modo di farlo, non sono sicuro però. Qualcuno può chiarire?
Altri suggerimenti
Dovresti sapere quale tableView ha inviato il messaggio (perché il metodo in questione è nel delegato per quell'oggetto) - e quindi puoi creare l'array nel metodo viewDidLoad nel delegato tableView, o in alternativa capire quale si basa sul contesto delegato.
Ovviamente non vedo nulla di male nell'iterare attraverso gli array. Con quale frequenza le persone eliminano le cose e i dizionari sono davvero abbastanza grandi da renderlo un sovraccarico significativo?
Come punto di riferimento, il metodo indexOfObject:
di NSArray non fa nulla di più elaborato dell'iterazione sebbene l'array cerchi un oggetto corrispondente.