Qual é a melhor maneira de armazenar um NSDate em NSUserDefaults?
Há duas maneiras de armazenar um NSDate em NSUserDefaults que eu encontrei.
Opção 1 - setObject: forKey:// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
Opção 2 - timeIntervalSince1970// Set
NSDate *myDate = [NSDate date];
NSTimeInterval myDateTimeInterval = [myDate timeIntervalSince1970];
[[NSUserDefaults standardUserDefaults] setFloat:myDateTimeInterval forKey:@"myDateKey"];
// Get
NSTimeInterval myDateTimeInterval = [[NSUserDefaults standardUserDefaults] floatForKey:@"myDateKey"];
NSDate *myDate = [NSDate dateWithTimeIntervalSince1970:myDateTimeInterval];
Prós e contrasOpção 1
Isso parece ser compacto e lógico. No entanto, tenho preocupações sobre isso dar errado por causa deErros de formatação de data.
opção 2
Isso parece ser desajeitado. Eu também não tenho certeza da precisão disso - em um teste que fiz, quando recuperei a data de volta, saí por 48 segundos, apesar do Apple Docs dizer que o NSTimeInterval tem "precisão de subsegundos".
RequisitosQualquer método que eu escolher, deve ser:
Preciso para dentro de um segundo.
Legível e confiável.
Minha perguntaÉ a imprecisão com a Opção 2 porque estou fazendo algo errado?
Qual dessas duas opções você usaria?
Existe outra opção que não conheço?
Obrigado!