Промежуточная сумма в фоновом режиме - PullRequest
1 голос
/ 05 апреля 2020

Измененный вопрос.

Мое фитнес-приложение будет рассчитывать количество сожженных калорий на основе рассчитанного значения для каждой секунды. У меня есть таймер, который позволит приложению забрать его обратно. Я не могу получить текущую сумму, чтобы продолжить вычисление, когда приложение уходит в фоновый режим. Я попытался поместить текущую сумму в DispatchQueue, но не получил сумму, как ожидалось. Любые указания приветствуются.

Вот код, который я поместил в функцию обновления таймера.

//MARK: - Update Timer Label
func updateTimerLabel() {

    interval = -Int(timerStartDate.timeIntervalSinceNow)

    time = interval

    let hours = interval / 3600
    let minutes = interval / 60 % 60
    let seconds = interval % 60

    print("Current interval = \(interval)")

    timerLabel.text = String(format:"%02i:%02i:%02i", hours, minutes, seconds)

    DispatchQueue.global(qos: .background).async {

        if self.activityArray[self.currentArrayRow].2 <= 4.5 {

            self.cps = self.activityArray[self.currentArrayRow].2 * Double(self.user.userWeightInKilo) / 3600

            self.runningCPS = self.runningCPS + self.cps

            print("MET \(self.activityArray[self.currentArrayRow].2) <= 4.5 * KG (\(Double(self.user.userWeightInKilo))) * HR (\(Double(self.user.userHeartRate))) / MaxHR (\(Double(self.user.maxHeartRate))  * interval \(Double(self.interval)) / 3600. Gives a cps 0f \(self.cps) and a runningCPS of \(self.runningCPS) ")

    } else {

            self.cps = self.activityArray[self.currentArrayRow].2 * Double(self.user.userWeightInKilo) * Double(self.user.userHeartRate) / Double(self.user.maxHeartRate) / 3600

            self.runningCPS = self.runningCPS + self.cps

            print("MET \(self.activityArray[self.currentArrayRow].2) > 4.5 * KG (\(Double(self.user.userWeightInKilo))) * HR (\(Double(self.user.userHeartRate))) / MaxHR (\(Double(self.user.maxHeartRate))  * interval \(Double(self.interval)) / 3600. Gives a cps 0f \(self.cps) and a runningCPS of \(self.runningCPS) ")


    }

}

    activeLabel.text = String(format: "%0.1f", runningCPS) + " Calories Burned"

}
...