如何使用NSUserDefaults与NSDateComponent存储?

时间:2016-04-29 03:22:27

标签: ios swift nsuserdefaults nsdatecomponents

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

  1. 创建一个文本字段供用户输入日期。当用户在安装后第一次打开应用程序时会发生这种情况。
  2. 将其与当前日期进行比较
  3. 显示差异。
  4. 存储差异,以便在后续加载App时,显示加载的差异。
  5. 我的代码看起来像这样(我稍后会将常量更改为从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 个答案:

答案 0 :(得分: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。但是如果你只对一些组件感兴趣,这对你来说已经足够了。