Pregunta

¿Cuál es la mejor manera de almacenar la configuración de un NSTableView (idealmente aprovechando su capacidad de copia de seguridad automática) para cada elemento en su NSTreeController padres? básicamente estoy buscando para reproducir la forma en iTunes almacena la configuración de columna para cada lista de reproducción por separado.

Tengo un montón de columnas, sin embargo, y no querría guardar manualmente cada tamaño de columna individual, etc. También estoy usando datos básicos, y me encantaría una solución que utiliza mi modelo de datos existente de persistir esta información.

Actualizar

He encontrado algo de código ( un Category de Daniel Jalkut ) que hace que sea fácil de almacenar y leer una representación NSDictionary de configuración de las columnas de un NSTableView. Así que creé un atributo binario en mi entidad de Datos Básicos, que ahora está almacenando las opciones de la ventana de esa entidad.

Lo que me gustaría ser capaz de hacer es automáticamente recuperar la configuración cuando se selecciona cada instancia de la entidad. Había intentado hacer esto con el valor-clave Observación en mi NSTreeController, pero por desgracia no me da una notificación adecuada. Me gustaría saber el tema que estoy conmutando entre, de modo que pueda almacenar la configuración para el nodo anterior antes de sobrescribir con la configuración del nuevo nodo.

He intentado observar @"selection", @"selectedObjects" y @"selectedIndexPaths", con todos los argumentos options que pude encontrar, y ninguno de ellos parecía funcionar correctamente. Recibo notificaciones en los momentos adecuados, pero sin ningún tipo de información útil en el diccionario "change" que el cambio de propiedad envía.

¿Fue útil?

Solución

I decidió utilizar el NSTableView + RSAutosaving Categoría he vinculado anteriormente (por cortesía de Daniel Jalkut y software suéter rojo), con algunas modificaciones también almacenan ya sea columnas están ocultas. Almaceno este NSDictionary como un atributo de datos binarios en mi entidad matriz de Datos Básicos (y he creado otro para almacenar por separado la información de clasificación).

A continuación, tengo mi ventana del controlador escuchan dos notificaciones de mi NSOutlineView. En la notificación @"NSOutlineViewSelectionIsChangingNotification", la selección de la NSTreeController es el nodo de edad. Almaceno la configuración de la NSTableView en este momento. A continuación, en la notificación @"NSOutlineViewSelectionDidChangeNotification", leí en la configuración del nuevo nodo. Esto funciona como un encanto.

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