2017-10-01 3 views
0

J'ai enregistré une date en utilisant UserDefaults et mes valeurs sont en cours d'enregistrement et j'essaie de présenter ma date enregistrée sous la forme d'une chaîne dans mon contrôleur de vue, mais il apparaît vide. Est-ce que je l'applique mal?Définition de UILabel à partir de UserDefualts

@IBOutlet weak var timeLabel: UILabel! 

let formatter = DateFormatter() 

func savedate(){ 

    UserDefaults.standard.set(datePicker.date, forKey: keyDate) 

} 

func loadDate(animation: Bool) { 

    guard let loadedDate = UserDefaults.standard.object(forKey: keyDate) as? Date else { return } 

    datePicker.setDate(loadedDate, animated: true) 

    print(loadedDate) 

    let loadedValue = formatter.string(from: loadedDate) 
    timeLabel.text = loadedValue 
} 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(true) 
    loadDate(animation: true) 
} 
@IBAction func saveTimeValue(_ sender: Any) { 
saveDate() 
} 

Répondre

1

Votre problème est que vous n'avez pas défini vos options de formatage de date. Comme il l'est retourne une chaîne vide pour une date:

Essayez

let formatter = DateFormatter() 
formatter.string(from: Date()) // "" 

Pour formater votre date correctement en utilisant une description localisée, vous pouvez jeter un oeil à ce answer.