Objetos retirados de NSArrayController se quedan en la mesa hasta que se hace clic
-
19-09-2019 - |
Pregunta
Tengo una NSArrayController que está obligado a managedObjectContext de AppDelegate de mi solicitud. Actúa como una cola de descarga. Los productos que se añaden a la programación NSArrayController
Tengo una tabla que muestra dos de los campos de esta, cada una columna con su valor unido individualmente a la dicha NSArrayController. Cuando se inicia una nueva descarga se elimina mediante programación desde el NSArrayController.
He añadido un botón para eliminar las descargas de la cola antes de que comiencen, el botón está obligado a eliminar de la NSArrayController:. Acción que debería quitar el elemento seleccionado en la tabla
Mi problema es que cuando se hace clic en el botón Eliminar el elemento seleccionado no se eliminan de la tabla, permanece allí hasta que se pulse otra entrada en la tabla. Selección de la fila en la que el elemento se hace que se puede seleccionar mientras el botón del ratón se mantiene presionado, como si todavía está allí, pero sin valores.
En la consola de la siguiente aparece cuando se hace clic en el botón de eliminación:
-[NSCFDictionary _setUnprocessedDeletion__:]: unrecognized selector sent to instance 0x2000f2220
Si quito los elementos de la tabla mediante programación
[[downloadsArray content] removeObjectAtIndex:0];
[downloadsTable reloadData];
[downloadsTable deselectAll:nil];
parece que funciona bien, excepto sigo teniendo el elemento invisible dejado atrás que puede ser seleccionado y permanece seleccionado sólo cuando el botón del ratón está presionado.
He atado atributo enabled del botón Quitar para canRemove del NSArrayController y esto funciona correctamente.
I tienen una etiqueta que muestra el número de elementos de la cola, esto está obligado a NSArrayController, arrangedObjects, @count. Esto funciona correctamente al agregar elementos, pero no cuando la eliminación de ellos.
¿Alguna idea sobre lo que estoy haciendo mal sería muy apreciada.
Solución
Yo tenía el mismo problema cuando traté de usar un NSFetchRequest con NSManagedObjectIDResultType, y luego trató de eliminar los resultados con - [NSManagedObjectContext deleteObject:].
Solución:. NSManagedObjectIDResultType no uso para un NSFetchRequest si va a eliminar la devolución de los objetos
Otros consejos
Sólo tenía un problema similar. Resulta que _setUnprocessedDeletion__: es un método definido para NSManagedObject, y aparentemente su mensaje se envía a un objeto cuando se retira de un controlador de array que se establece en el modo de Entidad. Ese fue mi problema; después de un día de remodelación pesada que terminó con un controlador de array establecido en el modo de entidad, cuyo contenido fue unido a una matriz de objetos regulares en lugar de objetos gestionados. Uno de estos errores se produjeron cuando me quita un objeto. Mira el contentArray de su controlador de matriz.