Pergunta

Eu tenho um NSArrayController que é obrigado a managedObjectContext de AppDelegate do meu aplicativo. Ele atua como uma fila de download. Os itens são adicionados à NSArrayController programaticamente

I têm uma tabela que mostra dois dos campos nesta, cada uma coluna com o seu valor individualmente ligado ao referido NSArrayController. Quando um novo download é iniciado ele é removido por meio de programação do NSArrayController.

Eu adicionei um botão para remover de downloads da fila antes de começar, o botão é obrigado a remover do NSArrayController:. Ação que deve remover o item selecionado na tabela

Meu problema é que ao clicar no botão Remover o item selecionado não são removidos da mesa, ele permanece lá até clicar outra entrada na tabela. Selecionando a linha onde o item foi faz com que seja selecionado enquanto o botão do mouse é pressionado, como se ele ainda está lá, mas sem valores.

No console aparecerá a seguinte quando o botão Remover é clicado: -[NSCFDictionary _setUnprocessedDeletion__:]: unrecognized selector sent to instance 0x2000f2220

Se eu remover itens da tabela programaticamente usando [[downloadsArray content] removeObjectAtIndex:0]; [downloadsTable reloadData]; [downloadsTable deselectAll:nil]; parece funcionar bem, exceto eu ainda obter o item invisível deixado para trás que podem ser selecionados e permanece selecionado apenas quando o botão do mouse está para baixo.

Eu tenho ligado atributo habilitado do botão Remover para CanRemove do NSArrayController e isso funciona corretamente.

Eu tenho um rótulo que mostra o número de itens na fila, este é obrigado a NSArrayController, arrangedObjects, @count. Isso funciona corretamente quando a adição de itens, mas não quando removê-los.

Algumas ideias sobre o que estou fazendo de errado seria muito apreciado.

Foi útil?

Solução

Eu tive o mesmo problema quando eu tentei usar um NSFetchRequest com NSManagedObjectIDResultType, e depois tentou excluir os resultados com -. [NSManagedObjectContext ExcluirObjeto:]

Solução:. Uso não faça NSManagedObjectIDResultType para um NSFetchRequest se você pretende excluir os objetos devolvidos

Outras dicas

Eu só tinha um problema semelhante. Acontece que _setUnprocessedDeletion__: é um método definido para NSManagedObject, e, aparentemente, a sua mensagem é enviada a um objecto quando este é removido a partir de um controlador de matriz, que está configurado para o modo de entidade. Esse foi o meu problema; após um dia de heavy remodelação acabei com um conjunto de controlador de matriz para o modo de Entidade, cujo conteúdo foi obrigado a uma matriz de objetos regulares em vez de objetos gerenciados. Um destes erros ocorreu sempre que um objecto removido. Olhe para o contentArray do seu controlador de matriz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top