首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NSUserDefaults和NSDateComponent进行存储?

如何使用NSUserDefaults和NSDateComponent进行存储?
EN

Stack Overflow用户
提问于 2016-04-29 03:22:27
回答 1查看 439关注 0票数 1

我需要做以下几件事,我需要你的帮助:

  1. 创建一个文本字段,供用户输入日期。当用户在安装后第一次打开应用程序时,就会发生这种情况。
  2. 将其与当前日期进行比较
  3. 显示不同之处。
  4. 存储差异,以便在随后加载App时,它会显示加载的差异。

我的代码如下所示(稍后我将将常量更改为从UITextField输入)

代码语言:javascript
复制
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))

请帮助如何使用diffDateComponents保存NSUserDefaults变量。

EN

回答 1

Stack Overflow用户

发布于 2016-04-29 04:52:51

将日期组件放入字典中,并将其存储在NSUserDefaults中。

示例:

代码语言:javascript
复制
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。但是如果您只对其中的几个组件感兴趣,这可能对您来说就足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36929003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档