可可 – 在NSUserDefaults中存储NSDate的最佳方法是什么?

可可 – 在NSUserDefaults中存储NSDate的最佳方法是什么?,第1张

概述有两种方法将NSDate存储在NSUserDefaults中,我遇到了。 选项1 – setObject:forKey: // SetNSDate *myDate = [NSDate date];[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];// GetNSDate *myDate 有两种方法将NSDate存储在NSUserDefaults中,我遇到了。

选项1 – setobject:forKey:

// SetNSDate *myDate = [NSDate date];[[NSUserDefaults standardUserDefaults] setobject:myDate forKey:@"myDateKey"];// GetNSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];

选项2 – timeIntervalSince1970

// SetNSDate *myDate = [NSDate date];NSTimeInterval myDateTimeInterval = [myDate timeIntervalSince1970];[[NSUserDefaults standardUserDefaults] setfloat:myDateTimeInterval forKey:@"myDateKey"];// GetNSTimeInterval myDateTimeInterval = [[NSUserDefaults standardUserDefaults] floatForKey:@"myDateKey"];NSDate *myDate = [NSDate dateWithTimeIntervalSince1970:myDateTimeInterval];

优点和缺点

选项1

这似乎是紧凑和合乎逻辑的。但是,我有担心这出错了,因为Date Formatter bugs。

选项2

这似乎是笨拙。我也不确定它的准确性 – 在一个测试,我做了,当我检索的日期,它出48秒,尽管苹果文档说NSTimeInterval具有“subsecond精度”。

要求

无论我选择什么方法,它必须是:

>精确到一秒钟。
>可读性强。

我的问题

是选项2的不准确,因为我做错了吗?

你会使用这两个选项中的哪一个?

有没有另一个选项,我不知道?

谢谢!

解决方法 你不必要地使事情复杂化。为什么要将日期转换为时间间隔(然后将时间间隔转换为不同的原语)?只是[sharedDefaults setobject:theDate forKey:@“theDateKey”],并用它做。 NSDate是PList格式(日期,数字,字符串,数据,字典和数组)支持的“主要类型”之一,因此您可以直接存储它。

见the documentation证明。

只需直接存储和检索日期,并观察它做正确的事(包括时区,精度等)。没有任何格式化工具,如其他人所说。

总结

以上是内存溢出为你收集整理的可可 – 在NSUserDefaults中存储NSDate的最佳方法是什么?全部内容,希望文章能够帮你解决可可 – 在NSUserDefaults中存储NSDate的最佳方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1049405.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存