如何读取定时器的值?迅捷
Posted
技术标签:
【中文标题】如何读取定时器的值?迅捷【英文标题】:How to read the values of timer? Swiftui 【发布时间】:2021-07-15 14:40:25 【问题描述】:我正在尝试在 swift UI 中创建下一个条件:
如果计时器(小时)显示 23,则试用 = 试用 + 1。 但是,它说我的代码永远不会被执行。那么,有没有可能做到这一点?
在我的应用程序中,用户选择了距离截止日期的天数,我正在尝试通过计时器对截止日期进行倒计时。我需要一个解决方案来读取计时器中的小时数,以便在计时器到达新的一天时保存一个新值。
也许您有其他解决方案(日历除外,因为我无法将它添加到我的应用中),我会很高兴听到他们的消息!
附:我的代码示例:
/////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
【问题讨论】:
【参考方案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
因为你是从你的函数返回的,它之后的代码永远不会被执行,这就是编译器告诉你的。您需要将返回移动到最后一个表达式
/////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)
【讨论】:
它让我的代码运行起来。然而,它导致了问题,当时间到了 23 点时它就停止了,一切都冻结了。我希望计时器像这样工作:计时器到 23 小时,检查小时 == 23,如果小时 == 23,只需将 +1 添加到我的值。然后,让计时器继续。以上是关于如何读取定时器的值?迅捷的主要内容,如果未能解决你的问题,请参考以下文章