2016-04-29 40 views
1

我需要做下面的事情,我需要你的帮助在于:如何使用NSUserDefaults与NSDateComponent存储?

  1. 用户输入一个日期创建一个文本框。当用户在安装后第一次打开应用程序时会发生这种情况。
  2. 将其与当前日期进行比较
  3. 显示差异。
  4. 存储差异,以便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帮助。

+1

你为什么要nsurl?你可以使用NSUserDefaults。 –

+0

你的问题没有多大意义。什么网址?您希望如何(以及为什么)使用日期组件的URL? – rmaddy

+0

我纠正了错字,它的NSuserdefault而不是nsurl。感谢您指出了这一点。 – akhicoda

回答

0

将日期组件放入字典中,并将其存储在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。但是如果你只对一些组件感兴趣,这对你来说就足够了。