如何读取定时器的值?迅捷

How to read the values of timer? Swiftui

我正在尝试 swift UI 中的下一个条件:

如果计时器(小时)显示 23,则 tryout = tryout + 1。 但是,它说我的代码永远不会被执行。那么,有没有可能做到这一点?

在我的应用程序中,用户选择截止日期前的天数,而我试图通过计时器进行截止日期倒计时。我需要一个解决方案来读取计时器中的小时数,这样我就可以在计时器到达新的一天时保存一个新值。

也许您有其他解决方案(日历除外,因为我无法将其添加到我的应用程序中),我将很高兴听到它们!

P.S。我的代码示例:

/////Timer
 let timer = Timer.publish(every: 3600, on: .main, in: .common).autoconnect()

/////Timer Func
func dayString(time: Int) -> String {
    let days   = Int(time) / 86400
    let hours   = Int(time) / 3600 % 24
    return String(format:"%02i", days)
    if hours == 23 {
        tryout = tryout + 1
    }
}

我不确定你想做什么,但你提到你的功能有问题,我可以帮助解决。

你有:

/////Timer Func
func dayString(time: Int) -> String {
    let days = Int(time) / 86400
    let hours = Int(time) / 3600 % 24
    return String(format:"%02i", days) // <- function returns
    if hours == 23 {                   // <- this will never run
        tryout = tryout + 1
    }
}

因为你是从你的函数中 returning 的,它后面的代码将永远不会被执行,这就是编译器告诉你的。您需要将 return 移动到最后一个表达式

/////Timer Func
func dayString(time: Int) -> String {
    let days = Int(time) / 86400
    let hours = Int(time) / 3600 % 24
    if hours == 23 {
        tryout = tryout + 1
    }
    return String(format:"%02i", days)
}