Estamos hablando de las preferencias por defecto del usuario. En otras palabras, vamos a usar la clase NSUserDefaults, que accede las preferencias que creemos o bien por código o bien con el diseñador de «Settings Bundle», estas quedan almacenadas en un fichero plist (xml), donde se define cada elemento como un diccionario que contiene los diferentes parámetros en tipos de datos que son diccionarios internamente.
Ejemplo de creación: File -> New File -> Resource -> Settings Bundle.
Normalmente el nombre que se le suele dar al fichero es «Root.plis», la edición dentro de XCode de este tipo de ficheros de configuración viene a ser algo así:
Estos diccionarios tienen unos tipos de atributos, los siguientes:
Veréis que existen varios tipos de datos a la hora de añadir un diccionario que contiene un elemento de preferencias, estos tipos pueden ser:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *strUser = [defaults objectForKey:@"usuario"]; int level = [[defaults objectForKey:@"nivel"] intValue]; NSString *strName = [defaults objectForKey:@"nombre"]; NSString *strPass = [defaults objectForKey:@"password"];
Si cargamos la aplicación por primera vez, debemos guardar los valores, igual que antes pero usando la función
[[NSUserDefaults standardUserDefaults] setValue:(id) forKey:(NSString*)];
[NSUserDefaults standardUserDefaults] synchronize]; //imprescindible!
,evidentemente, si los tipos de datos son numéricos, tenemos que encapsularlos en una clase NSNumber, etc.
Para reiniciar los valores en el simulador (esto debemos hacerlo también para cuando cambiemos un fichero traducido de Interface Builder) , borramos el directorio ~/Library/Application Support/iPhone Simulator/User/Applications o bien, abrimos el simulador, y borramos la aplicación o por último, en el menú del simulador – > Restablecer contenidos y ajustes. Esta última opción borrará todas las compilaciones de XIB a NIB (ficheros de I.B.).
Este fichero, según la documentación de XCode, contiene la información de configuración de la aplicación (en un bundle), puede utilizarse para especificar el icono de la aplicación, incluso una cadena «audio» en la variable UIBackgroundModes para cuando la aplicación pasa a segundo plano y estamos haciendo streaming ,que no se corte.
O se puede indicar con la cadena «voip» para que se use un socket para VoIP (luego hace falta que se invoque al método setKeepAliveTimeout: handler para especificar la frecuencia con la que despertar la aplicación para que funcione bien la aplicación, por ejemplo, para cargar el buffer que se está reproduciendo).
Para realizar las traducciones utilizamos dos aplicaciones de XCode que extraen las cadenas de texto a traducir a todos los idiomas: ( ver recursos de traducción> ),
toma como entrada todos los ficheros de implementación y busca NSLocalizedString, creando un fichero codificado con el juego de caracteres UTF-16 con líneas así:
/* Comentario de la llave */
«llave» = «Texto para la llave»;
Una vez generados los ficheros para los .m en cada idioma, pues se traducen y luego se deben añadir los directorios al proyecto, si véis que no coge las cadenas de texto, quitad los directorios (en.lproj) sin borrarlos ,sólo la referencia, y luego añadirlos de nuevo
En el fichero strings estarán las cadenas de texto a traducir, una vez hecho, las escribimos de nuevo al .xib:
[sourcecode language=»bash»]
ibtool –write MiFichero.strings MiFichero.xib
<< Volver al Curso de Aplicaciones de iOS
|| Ir al siguiente capítulo: Geolocalización con MapKit de Google y CoreLocation »