Pregunta

Parece que, a partir de las partes y piezas que puedo juntar, la respuesta a esta pregunta será "no", por lo que explicaré ampliamente lo que estoy tratando de lograr en el (probable) caso en el que estoy tratando de martillar en un tornillo.

Lo que tengo en mi aplicación es una lista de extensiones de archivo válidas para leer, para lo cual estoy recurriendo a través de un directorio. Quiero que esto sea una preferencia, así que tengo lo siguiente:

NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:[NSMutableArray arrayWithObjects:@"pdf", @"rtf", @"txt", nil] forKey:@"validExtensions"];
[[NSUserDefaults standardUserDefaults] registerDefaults:dic];

y estoy vinculando el NSTableView a un NSArrayController que está vinculado al controlador de valores predeterminados de usuario compartido ...

¿Es este un enfoque completamente equivocado para tener una lista de extensiones válidas y personalizables por el usuario? ¿He malinterpretado el rol de NSUserDefaults?

¿Fue útil?

Solución

La respuesta a la pregunta planteada en el título es " Sí " ... pero desafortunadamente, eso no le ayuda, porque la mutabilidad de las estructuras de datos en el almacén de respaldo real de NSUserDefaults no está controlada por la mutabilidad de los objetos que pasa con registerDefaults :.

Para los valores de preferencias que son estructuras en sí mismos, para cambiarlos, debe leer la estructura antigua, hacer una copia mutable de cualquier parte que necesite modificar, modificarla y luego establecer esa estructura como el nuevo valor. Desafortunadamente, eso no es adecuado para los enlaces, por lo que necesitaría una capa de pegamento que refleje los cambios en una matriz unida en las preferencias.

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