
选项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的最佳方法是什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)