2011-10-21 7 views
5

Estoy trabajando en un juego y todo el progreso que realice el usuario se guardará con NSUserDefaults. ¿Es una buena o mala idea?Guardando el progreso del juego con NSUserDefault: ¿Buena o mala idea?

¿Cuáles son las posibilidades de perder el juego guardado? ¿Hay una mejor manera de hacer esto?

Cuando el usuario sincroniza el dispositivo, iTunes hará una copia de seguridad de NSUserDefaults? Entonces, en caso de que el usuario cambie su dispositivo, no perderá el progreso, solo tiene que sincronizar el dispositivo con iTunes. ¿Qué tan seguro es?

Los logros de GameCenter también se guardarán con NSUserDefaults, en caso de que el usuario no tenga conexión a Internet en ese momento.

Bueno, solo quiero saber tu opinión/experiencia. Todo el código funciona de manera impecable, pero me temo que el jugador podría perder su progreso por alguna razón.

Si alguien quiere más detalles sobre el código, no dude en preguntar, puedo publicarlo aquí.

Gracias!

+1

1 Yo también he tenido curiosidad por este y su pregunta me ayudó a asignar, aunque lo he comprobado y me he conformado con 'NSUserDefault', pero la curiosidad me lleva a depositar en la base de datos ... Ahora ya no hay curiosidad, muchas gracias por esta pregunta – rptwsthi

Respuesta

4

NSUserDefaults se sincronizan con iTunes si el usuario sincroniza la aplicación. La información es segura siempre y cuando el usuario no elimine el juego.

Si necesita conservar los datos incluso después de que el usuario elimina el juego, usted puede considerar el almacenamiento de datos en otro lugar (por ejemplo, Dropbox, propio servidor, etc.)

+0

Gracias por su respuesta. Estaba pensando en almacenar en mi propio servidor, y luego podría sincronizar el juego en varios dispositivos, por ejemplo, si el usuario tiene un iPhone y un iPad. ¿Alguna idea de cómo hacer esto, exportar NSUserDefaults a un servidor? Sin código, solo algo que puedo investigar sería genial. – tomDev

+2

Puede usar iCloud para esa copia de respaldo, solo recuerde que el equivalente de iCloud de NSUserDefaults está limitado a 64 kb – EmilioPelaez

+1

Serialice en un diccionario JSON y 'POST' en una secuencia de comandos en su servidor junto con el nombre de usuario (si tiene cuentas). Al inicio, 'GET' de la misma URL y devuelve un objeto de diccionario JSON que se deserializa en un' NSDictionary' y se importa en 'NSUserDefaults' manualmente. Solo tenga cuidado con los casos límite, por ejemplo, cuando los dos dispositivos de un usuario ya tienen el juego en ejecución, y uno de ellos actualiza la configuración ... ¿qué desea hacer? ¿Sincronización continua? ¿Sobrescribir con los ajustes que tenga la instancia actual? – darvids0n

9

En mi opinión, NSUserDefaults es perfectamente seguro. Los contenidos se mantienen incluso después de una actualización de la versión de la aplicación.

+0

respuesta simple y correcta –

+0

+ 1 @ ZakyGerman tiene toda la razón – rptwsthi

Cuestiones relacionadas