#swift #timer #background
#быстрый #таймер #фон
Вопрос:
Я очень новичок в программировании на swift, и у меня есть идея создать приложение, которое будет показывать вам новое изображение каждый раз, когда таймер заканчивается. Я уже добавил фоновый режим, и в фоновом режиме приложение работает хорошо. Но когда я закрываю его, таймер сбрасывается. Как я могу это исправить и как проще всего заставить таймер работать, даже если я закрою приложение?? Вот мой код:
var timer: Timer? var timeLeft = 10 func secondsToHoursMinutesSeconds (seconds : Int) -gt; (Int, Int, Int) { return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60) } func printSecondsToHoursMinutesSeconds (seconds:Int) -gt; () { let (h, m, s) = secondsToHoursMinutesSeconds (seconds: timeLeft) timeLabel.text = ("(h) : (m) : (s) ") } override func viewDidLoad() { super.viewDidLoad() timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(onTimerFires), userInfo: nil, repeats: true) } @objc func onTimerFires() { timeLeft -= 1 printSecondsToHoursMinutesSeconds(seconds: timeLeft) print(timeLeft) //ПРИНТ if timeLeft lt;= 0 { calendarRaven0() timer?.invalidate() timer = nil } } func calendarRaven0(){ if timeLeft == 0 { timeLabel.text = "Done" } @IBAction func buttonPressed(_ sender: UIButton) { checkTimerAvaible() func checkTimerAvaible(){ if timeLeft == 0 { timeLeft = 10 viewDidLoad() let imageArray = [#imageLiteral(resourceName: "3") , #imageLiteral(resourceName: "4") , #imageLiteral(resourceName: "2")] mainImages.image = imageArray[Int.random(in: 0...2)] }
Комментарии:
1. Что именно вы подразумеваете под «закрыть приложение»? Очевидно, что при выходе из приложения ваш код перестанет выполняться.
2. Вы можете использовать UserDefaults для хранения состояния вашего приложения между исполнениями.