Pregunta

Dejo que el usuario realice cambios en su configuración en el área de configuración del iPhone.Durante la próxima Sincronización de la red, me gustaría enviar los cambios de usuario al servidor.Pero solo si se realizan los cambios.

Pero, ¿cómo puedo saber cuándo el usuario ha realizado un cambio dentro del área de configuración?

Si puedo, me gustaría evitar la opción de enviar siempre la información, independientemente de si se modifica o no o obteniendo la información del servidor primero y actualizando si es diferente de los valores predeterminados del usuario.

¿Hay una forma agradable y elegante de resolver este problema? ¡Gracias por su ayuda!

una semana después y sin respuestas ... ¿Es esta pregunta demasiado difícil o no tiene ningún sentido en absoluto?

¿Fue útil?

Solución

ah soy tonta!Aquí vamos con una forma elegante.Busque AppRecefs en la documentación de Apple dentro de Xcode y mostrará una aplicación de ejemplo que hace exactamente lo que quiere hacer.¡Solo compila y corre!Hace uso de la nsuserdefaultsdidchangenotification .

Este es el código que se está utilizando para registrar un observador:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(defaultsChanged:)
                                             name:NSUserDefaultsDidChangeNotification
                                           object:nil];


Respuesta vieja:

No se ve como si pudiera obtener una fecha de modificación de los NSUSERDEFAULTS.Hasta ahora solo puedo pensar de esta manera:

NSUserDefaults *previousDefaults = [someInstance previousUserDefaults];
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];

if([previousDefaults isEqualToDictionary:currentDefaults]) 
{
    [someOtherInstance sendModifiedUserDefaultsToServerWithDefaults:currentDefaults];
    [yetAnotherInstance saveModified]
}

Tiene que guardar el usuario por defecto de los valores predeterminados como diccionario al disco cuando se inicia la aplicación la primera vez: sus valores predeterminados.Luego, cada vez que se abre la aplicación, comparas esos dos diccionarios.Si ellos

Otros consejos

No es que la pregunta sea demasiado difícil, es solo que no hay una manera sencilla de hacer lo que está preguntando.Nsuserdefaults no registra una fecha "Última modificación" para la configuración de cada aplicación, al menos en lo que puedo decir, por lo que si el usuario cambia algunas configuraciones usando la aplicación Configuración, no hay una buena manera de detectar eso, aparte de mirarTodas las configuraciones.

Si realmente necesita hacer esto, creo que su mejor apuesta es leer las configuraciones que está interesado en sincronizar en alguna estructura de datos y calcular algún tipo de hash o cheques en función de esa estructura.Compare ese valor al valor que calculó la última vez que la aplicación corrió, y sincroniza con el servidor si es diferente.Puede almacenar ese valor en NSUSERDEFAULTS si lo desea, pero asegúrese de no incluirlo en el cálculo.

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