มีสองวิธีในการจัดเก็บ NSDate ใน NSUserDefaults ที่ฉันเจอ
ตัวเลือกที่ 1 - setObject: forKey:
// Set
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
// Get
NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
ตัวเลือก 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];
ข้อดีและข้อเสีย
ตัวเลือกที่ 1
ดูเหมือนว่าจะกะทัดรัดและมีเหตุผล แต่ฉันมีความกังวลเกี่ยวกับเรื่องนี้ผิดไปเพราะวันโรคจิตฟอร์แมต
ตัวเลือก 2
ดูเหมือนว่าจะเงอะงะ ฉันยังไม่แน่ใจเกี่ยวกับความถูกต้องของมัน - ในการทดสอบหนึ่งครั้งเมื่อฉันดึงวันที่กลับมาได้ภายใน 48 วินาทีแม้ว่า Apple Docs จะบอกว่า NSTimeInterval มี "ความแม่นยำย่อย"
ความต้องการ
วิธีใดก็ตามที่ฉันเลือกจะต้องเป็น:
แม่นยำภายในไม่กี่วินาที
อ่านและเชื่อถือได้
คำถามของฉัน
ตัวเลือกที่ 2 ไม่ถูกต้องเพราะฉันทำอะไรผิดหรือเปล่า?
คุณจะใช้ตัวเลือกใดในสองข้อนี้
มีตัวเลือกอื่นที่ฉันไม่ทราบหรือไม่?
ขอบคุณ!