Bir NSDate'i karşılaştığım NSUserDefaults'ta depolamanın iki yolu var.
Seçenek 1 - setObject: forKey:
// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
Seçenek 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];
Lehte ve aleyhte olanlar
seçenek 1
Bu kompakt ve mantıklı görünüyor. Ancak, Date Formatter hataları nedeniyle bunun yanlış gitmesi konusunda endişelerim var .
seçenek 2
Bu beceriksiz görünüyor. Bunun doğruluğundan da emin değilim - yaptığım bir testte, Apple Docs'un NSTimeInterval'in "sonraki aşama doğruluğu" olduğunu söylemesine rağmen, tarihi geri aldığımda 48 saniye geçti.
Gereksinimler
Hangi yöntemi seçersem seçmeliyim:
Bir saniye içinde hassas.
Okunabilir ve güvenilir.
Benim sorum
Seçenek 2'deki yanlışlık yanlış bir şey yaptığım için mi?
Bu iki seçenekten hangisini kullanırsınız?
Farkında olmadığım başka bir seçenek var mı?
Teşekkürler!