Это приложение таймера, и я хотел бы, чтобы таймер сделал паузу, когда приложение будет убито, и когда вы снова откроете приложение, я бы хотел, чтобы таймер отображал последнее известное время.
Я установил структуру для данных, которые будут сохранены.
let defaults = UserDefaults.standard
private enum TimeData {
static let allCurrentTime = "allCurrentTime"
}
override func viewDidLoad() {
super.viewDidLoad()
checkForSavedTimer()
marksSavedData()
theTimer.text = "00:00:00"
theTimer.font = UIFont(name: "Menlo-BoldItalic", size: 40)
marksTableView.isHidden = false
}
//I set the timer info to the struct (see below)
@objc func updateTimerLabel() {
seconds += 1
if seconds == 60 {
minutes += 1
seconds = 0
}else if minutes == 60 {
hours += 1
minutes = 0
}
timerString = "\(hours):\(minutes):\(seconds)"
theTimer.text = timerString
defaults.set(theTimer.text, forKey: TimeData.allCurrentTime)
}
// I then created a function which I called in the viewdidload above
func checkForSavedTimer() {
let allCurrentTime = defaults.value(forKey: TimeData.allCurrentTime) as? String ?? ""
theTimer.text = allCurrentTime
}
Я думал, что это возьмет строку из theTimer, сохранит ее в UserDefaults, а затем в viewDidLoad вернет ее и сохранит в "theTimer.text", НО результат 00: 00: 00