Как заставить таймер работать, даже если приложение закрыто в swift

#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 для хранения состояния вашего приложения между исполнениями.