2016-04-29 14 views
1

Ich brauche folgende Dinge zu tun und ich brauche Ihre Hilfe, dass:Wie NSUserDefaults mit NSDateComponent zu speichern?

  1. ein Textfeld für Benutzer erstellen ein Datum eingeben. Dies passiert, wenn der Nutzer die App zum ersten Mal nach der Installation öffnet.
  2. vergleichen Sie es mit dem aktuellen Datum
  3. zeigen Sie den Unterschied.
  4. Speichern Sie den Unterschied, damit die geladene Differenz angezeigt wird, wenn die App später geladen wird.

Mein Code sieht wie folgt aus (ich werde die Konstanten auf eine Eingabe von UITextField später ändern)

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)) 

Bitte helfen, wie die diffDateComponents mit NSUserDefaults Variable zu speichern.

+1

Warum willst du nsurl? Sie können einfach NSUserDefaults verwenden. –

+0

Ihre Frage ergibt nicht viel Sinn. Welche URL? Wie (und warum) möchten Sie eine URL für Datumskomponenten verwenden? – rmaddy

+0

Ich korrigierte den Tippfehler, seinen NSuserdefault und nicht nsurl. Danke, dass du das gezeigt hast. – akhicoda

Antwort

0

Setzen Sie die Datumskomponenten in ein Wörterbuch und speichern Sie diese in NSUserDefaults.

Beispiel:

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") 

Auf diese Weise brauchen Sie nicht mit den String-Darstellungen der Daten zu befassen. Natürlich, wie @rmaddy darauf hingewiesen hat, könnten Sie einfach das andere Datum speichern und abrufen, wenn Sie es immer mit dem aktuellen Datum vergleichen.

UPDATE: Ich weiß, dass dies nicht die ganze NSDateComponents speichert, also wenn Sie das brauchen, müssen Sie NSCoding implementieren. Aber wenn Sie nur an einigen Komponenten interessiert sind, könnte dies für Sie genug sein.