AVISO: Cualquier pregunta que no cumpla ninguno de estos criterios podrá ser borrada sin previo aviso.

Me gustaría guardar algunos datos de las preferencias de usuario de mi aplicación sin tener que usar una base de datos. Basicamente sería el nombre de usuario, para que persista entre ejecuciones de la aplicación, pero que en un momento dado el usuario pueda cambiarlo y que se registre ese cambio.

¿Alguna pista de como hacer esto sin base de datos?

preguntado 23 Nov '10, 13:22

Carlosb84's gravatar image

Carlosb84
7691116

editó 24 Nov '10, 13:53

Rafa%20L%C3%B3pez's gravatar image

Rafa López
58141220


Hola Carlos, a bote pronto se me ocurre que lo guardes en un archivo de texto que generes en el sandbox de la app (carpeta documents), o bien uses un archivo plist (lista de propiedades o property list).

Los archivos de texto son algo trivial que conocerás de otros lenguajes. El path de la carpeta documents lo puedes encontrar con:

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask,YES);
NSString *documentsPath = [paths objectAtIndex:0];

Y el path del archivo completo (por ejemplo foo.plist, en plan gringo):

NSString *fooPath = [documentsPath stringByAppendingPathComponent:@“foo.plist”];

Los plist son realmente archivos XML que se pueden inicializar desde Xcode o mediante código. Permiten guardar variables sencillas como enteros o cadenas, y colecciones como arrays. Para ello puedes mirarte la clase NSUserDefaults y/o NSPropertyListSerialization, y métodos como:

 - (BOOL)writeToFile:(NSString *)aPath atomically:(BOOL)flag;
 - (id)initWithContentsOfFile:(NSString *)aPath;

Estos métodos no son de NSUserDefaults, sino convenience methods de otras clases como NSArray. Te recomiendo el documento "Property List Programming Guide for Cocoa" de Apple.

enlace permanente

respondido 23 Nov '10, 16:32

Rafa%20L%C3%B3pez's gravatar image

Rafa López
58141220

editó 23 Nov '10, 16:37

Muchas gracias. Miraré el método de guardarlo como String en un fichero plist.

(24 Nov '10, 09:28) Carlosb84

O siempre se puede usar NSUserDefaults (si solo es para pocos datos)

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue forKey:@""];[defaults synchronize];

Y para obtener el valor, el método valueForKey: NSUserFDefaults se comporta como un diccionario.

Saludos.

Edito: Mil perdones pero la respuesta de arriba al final ya decía lo de NSUserDefaults. Si es que no leer hasta el final, es lo que tiene. Saludos y perdón

enlace permanente

respondido 24 Nov '10, 10:34

keyholiano's gravatar image

keyholiano
1.1k1819

editó 24 Nov '10, 10:35

1

Muchas gracias a ti también, al final he optado por tu solución, ya que unicamente es el nombre de usuario lo que quiero almacenar. Me ha servido de mucho el código. Aquí pongo lo que yo he usado, para recuperar:

NSUserDefaults defaults = [NSUserDefaults standardUserDefaults]; NSString aux=[defaults stringForKey:@"usuario"];

y para almacenar:

[defaults setValue:@"valor" forKey: @"usuario"]; [defaults synchronize];

(24 Nov '10, 15:20) Carlosb84

De nada, un placer. Nos vemos por aquí ;)

(24 Nov '10, 21:54) keyholiano
Tu respuesta:
Activar/desactivar vista previa

Sobre esta pregunta

Etiquetas de la pregunta:

×73
×4
×2

Pregunta realizada el: 23 Nov '10, 13:22

Pregunta visitada: 1,039 veces

Última modificación: 24 Nov '10, 21:54

Seguir esta pregunta

Por Email:

Una vez que entres podrás suscribirte desde aquí para recibir actualizaciones

Por RSS:

Respuestas

Respuestas y Comentarios

Realizar Donación