Excluir objeto da Array em NStableView
-
06-07-2019 - |
Pergunta
Rápido. Estou negligenciando algo ...
Eu tenho uma visão de tabela agrupada que é construída a partir de matrizes em um nsdictionary. Cada matriz é uma seção da tabela. Quando no modo de edição e um usuário clica em "excluir", eu chamo
- (void)removeObject:(MyClass *)myObject
Como posso determinar qual matriz enviar a mensagem [MyArray RemowObject: MyObject]? O nsdictionary não possui um indexOfObject: Method, mas o nsarray possui. Suponho que eu poderia itera em cada matriz procurando o referido objeto, mas isso não parece certo.
Alguém pode sacudir meu cérebro, por favor?!? THX!
Solução
Você pode implementar os protocolos padrão do uabableView e usar 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>}
Eu acho que é assim que não tem certeza. Alguém pode esclarecer?
Outras dicas
Você deve saber em qual tabelaview enviou a mensagem (porque o método em questão está no delegado para esse objeto) - e, portanto, você pode criar a matriz no método ViewDidload no delegado da TableView ou, alternativamente, descobrir qual é baseado em o contexto delegado.
Não vejo nada obviamente errado em iterar através das matrizes. Com que frequência as pessoas excluem as coisas e os dicionários são realmente grandes o suficiente para tornar isso uma sobrecarga significativa?
Como ponto de referência, NSArray's indexOfObject:
O método não faz nada mais extravagante do que iterar, embora a matriz esteja procurando um objeto correspondente.