Pregunta

Como muchos de ustedes saben, un NSTreeController unido a una vista de esquema puede mostrar duplicados durante la presentación de las entidades de datos centrales.

Una solución temporal es agregar 'padre == nil' a los predicados, pero esto sólo devuelve entidades matrices. Si, por ejemplo, un usuario está buscando un sub-entidad, no se mostrará la sub-órgano requerido.

Una solución (propuesto) es a subclase NSTreeController y añadir una variable NSMutableSet, que mantiene un registro de entidades que están siendo mostrado actualmente. Esta variable se debe alloced en init, y puesto en libertad el dealloc.

Cuando "fetchWithRequest: fusión: error:" se llama, el conjunto debe ser vaciado (no estoy seguro de si esto sería más eficiente que soltarlo y la asignación de nuevo). Cada vez que una entidad va a ser añadido a la pantalla, comprobar si el conjunto contiene. Si no lo hace, añadirlo. De lo contrario, encontrar la que está más cerca de la raíz (que es la subentidad) y, o bien saltar si es la subentidad, o de intercambio con el que ya se haya incluido.

Creo que debería ser relativamente poco impacto en el rendimiento (teniendo en cuenta NSSet usos hash). El problema que estoy teniendo es encontrar el método correcto para anular añadir este comportamiento. Específicamente, donde NSTreeController procesa entidades inverosímiles después de "fetchWithRequest: combinación de: error:". Se llama

¿Fue útil?

Solución

¿Es justo decir que usted está realmente en busca de una forma de filtrar el árbol con un término de búsqueda sin perder la estructura de árbol? El problema inherente (más allá de forzar el controlador árbol para incluir los nodos padre de un partido de búsqueda) es que los padres pueden o no coincidir con la realidad resultado de la búsqueda, por lo que es confuso para mostrarlos.

Creo que la suya es más un problema de interfaz de usuario, ¿verdad? En ese caso, el mejor enfoque (y que he visto muchas compañías bien conocidas y desarrolladores independientes toman) es a mostrar resultados de búsqueda en una tabla sencilla. De esta manera los resultados se pueden ordenar por diversos atributos y usted no tiene que arrastrar y soltar desactivar en la vista de esquema en el modo de búsqueda (para evitar que el usuario intenta cambiar la estructura de árbol cuando sólo una parte del árbol se muestra fuera de contexto ).

Otros consejos

Ampliando la respuesta de Joshua, yo era capaz de implementar la funcionalidad de búsqueda en mi propia NSOutlineView, sin embargo, se limita a los objetos de la raíz / padres en la vista.

Creo que (como dijo Joshua) si desea filtrar todos los objetos que tendría que mostrar los resultados en una NSTableView.

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