如何使用 NSUserDefaults 和 NSDateComponent 来存储?
Posted
技术标签:
【中文标题】如何使用 NSUserDefaults 和 NSDateComponent 来存储?【英文标题】:How to use NSUserDefaults with NSDateComponent to store? 【发布时间】:2016-04-29 03:22:27 【问题描述】:我需要做以下事情,我需要你的帮助:
-
创建一个文本字段供用户输入日期。当用户在安装后第一次打开应用程序时会发生这种情况。
与当前日期比较
显示差异。
存储差异,以便在后续加载 App 时,显示加载的差异。
我的代码如下所示(稍后我会将常量更改为从 UITextField 输入)
let currentDate = NSDate()
let dataformatterCurrent = NSDateFormatter()
dataformatterCurrent.dateFormat = "MMMM dd, yyyy, HH:mm"
let convertedCurrentDate = dataformatterCurrent.stringFromDate(currentDate)
let dateformatter = NSDateFormatter()
dateformatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dateAskumar = "2015-10-08 14:25:37"
let date1 = dateformatter.dateFromString(dateAskumar)!
let diffDateComponents = NSCalendar.currentCalendar().components([NSCalendarUnit.Month, NSCalendarUnit.Day, NSCalendarUnit.Hour, NSCalendarUnit.Minute], fromDate: date1, toDate: currentDate, options: NSCalendarOptions.init(rawValue: 1))
请帮助您了解如何使用 NSUserDefaults 保存 diffDateComponents 变量。
【问题讨论】:
为什么要使用nsurl?你可以只使用 NSUserDefaults。 你的问题没有多大意义。什么网址?您希望如何(以及为什么)将 URL 用于日期组件? 我纠正了错字,它的 NSuserdefault 而不是 nsurl。感谢您指出这一点。 你必须实现NSCoding
到NSDateComponents
以将它们存储在NSUserDefaults
,但这不是一个好主意,我也不知道它是否可能,我建议你改变与 String 或 Int 的区别,然后很容易存储,就像在你的情况下,一个字符串 MMMM dd, yyyy
或 sth 就足够了
为什么要将组件存储在NSUserDefaults
中?只需存储date1
。
【参考方案1】:
将日期组件放入字典中,并将其存储在NSUserDefaults
。
例子:
let currentDate = NSDate()
let unitFlags: NSCalendarUnit = [.Month, .Day, .Hour, .Minute]
let components = NSCalendar.currentCalendar().components(unitFlags, fromDate: date1, toDate: currentDate, options: [])
let difference = ["months": components.month, "days": components.day, "hours": components.hour, "minutes": components.minute ]
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(difference, forKey: "difference")
这样你就不需要处理日期的字符串表示了。当然,正如@rmaddy 指出的那样,如果您始终将其与当前日期进行比较,您可以只存储和检索另一个日期。
更新:我知道这不会存储整个NSDateComponents
,所以如果你需要它,你必须实现NSCoding
。但如果您只对其中的几个组件感兴趣,那么这对您来说就足够了。
【讨论】:
以上是关于如何使用 NSUserDefaults 和 NSDateComponent 来存储?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NSUserDefaults 和 NSDateComponent 来存储?
如何使用 NSUserDefaults 检查当前时间和上次发布时间?
如何使用 NSUserDefaults 存储和加载 BOOL 数组或 int 数组? (IOS 7)