Guardar y recuperar la fecha en objective-c con Xcode

Programando para nuestro dispositivo Apple, iphone por ejemplo, con objective-c y con e el Xcode, es posible que queramos almacenar la fecha de forma persistente, es decir, que no se borre cuando cerramos la aplicación.

Para ello utilizaremos las variables de preferencia de nuestra aplicación, o sea, NSUserDefaults y guardaremos la fecha actual (es un tipo NSDate)

Utilizaremos este código para guardar, por ejemplo, la fecha y la hora de hoy:

//Instanciamos la variable de las preferencias de la aplicación
NSUserDefaults *defaults = [NSUSerDefaults standardUserDefaults];
//Guardamos la fecha actual en la variable hoy
NSDate *hoy = [NSDate date];
//Guardamos el valor de hoy en las variables de preferencias de la aplicación
[defaults setObject:hoy forKey:@"ValorHoy"];
//Forzamos la sincronización para que guarde el valor ya
[defaults synchronize];

Y con este otro código la recuperamos:

//Instanciamos la variable de las preferencias de la aplicación si no la habíamos utilizado ya
//en caso de haberla instanciado ya, no haría falta este paso
NSUserDefaults *defaults = [NSUSerDefaults standardUserDefaults];
//Cargamos la fecha actual en la variable hoy
NSDate *fechaGuardada = (NSDate*)[defaults objectForKey:@"ValorHoy"];

Y ya tendríamos la fecha recuperada que guardamos anteriormente en la variable fechaGuardada.

Comparar NSString con null en objective-c y xcode

Saber si una cadena (NSString) es null en objective-c puede parecer algo trivial y muy intuitivo pero si estás empezando es algo que puede venir bien.

En este fragmento de código, que ejecutamos en XCode vemos como intentamos cargar una variable, que está almacenada en los datos de usuario de nuestra aplicación, y que compararemos para saber si es null, en cuyo caso le asignaremos un valor por defecto.

//Cargo la ciudad
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *ciudad;
ciudad = [defaults stringForKey:@"Ciudad"];

//Comparar si NSString es null
if(ciudad == nil)
{
[defaults setValue:@"Madrid" forKey:@"Ciudad"];
[defaults synchronize];
}