2016-04-29 1 views
1

je dois faire les choses suivantes et j'ai besoin de votre aide en ce que:Comment utiliser NSUserDefaults avec NSDateComponent pour stocker?

  1. créer un champ de texte pour l'utilisateur d'entrer une date. Cela se produit lorsque l'utilisateur ouvre l'application pour la première fois après l'installation.
  2. comparer avec la date actuelle
  3. montrez la différence.
  4. Stockez la différence de sorte que lorsque l'application est chargée ultérieurement, elle indique la différence chargée.

Mon code ressemble à ceci (je vais changer les constantes à l'entrée de UITextField plus tard)

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

S'il vous plaît aider à comment sauver les diffDateComponents variables avec NSUserDefaults. Mettez les composants de date dans un dictionnaire et stockez-les dans NSUserDefaults.

+1

Pourquoi voulez-vous nsurl? Vous pouvez simplement utiliser NSUserDefaults. –

+0

Votre question n'a pas beaucoup de sens. Quelle URL? Comment (et pourquoi) souhaitez-vous utiliser une URL pour les composants de date? – rmaddy

+0

J'ai corrigé la faute de frappe, son NSuserdefault et non nsurl. Merci d'avoir fait remarquer cela. – akhicoda

Répondre

0

Exemple:

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

De cette façon, vous n'avez pas besoin de traiter avec les représentations de chaîne des dates. Bien sûr, comme l'a souligné @rmaddy, vous pouvez simplement stocker et récupérer l'autre date, si vous la comparez toujours à la date actuelle. MISE À JOUR: Je sais que cela ne stocke pas le NSDateComponents entier, donc si vous avez besoin de cela, vous devez implémenter NSCoding. Mais si vous êtes seulement intéressé par quelques-uns des composants, cela pourrait être suffisant pour vous.