Ios 重复函数调用后时间间隔不变

Ios 重复函数调用后时间间隔不变,ios,iphone,swift,Ios,Iphone,Swift,我的代码的目标是每5秒调用一个函数,它成功地做到了这一点。问题是,当我每次声明seconds变量时,它不会改变,即使开始日期不应该改变 func timedUpdate() { let initialBank = 2000 let dateOfInstallation = UserDefaults.standard.object(forKey: "installDate") let seconds = date.timeIntervalSince(dateOfInsta

我的代码的目标是每5秒调用一个函数,它成功地做到了这一点。问题是,当我每次声明seconds变量时,它不会改变,即使开始日期不应该改变

func timedUpdate()
{

    let initialBank = 2000
    let dateOfInstallation = UserDefaults.standard.object(forKey: "installDate")
    let seconds = date.timeIntervalSince(dateOfInstallation as! Date) / 8.64

    let bestStreak = (UserDefaults.standard.integer(forKey: "bestStreak"))
    let days = seconds / 86400


    print(seconds/8.64)
    print(UserDefaults.standard.object(forKey: "bestStreak")!)

    if (Int(days) > bestStreak)
    {
        UserDefaults.standard.set(days, forKey: "bestStreak")
    }

    bestStreakLabel.text = "\(Int(bestStreak)) Days"
    currentStreakLabel.text = "\(Int(days)) Days"
    currentStreakBar.progress = CGFloat(Float(days)/Float(bestStreak))
    bestStreakBar.progress = 1

    getTodaysSteps { [weak self] steps in
        self?.bankTotalLabel.text = "\(Int(steps) - Int(seconds/8.64) + Int(initialBank))"
        self?.circleLabel.progress = Double(((Double(steps) - Double(seconds) + Double(initialBank))) / 10000)

        if (Int(steps) - Int(seconds) + Int(initialBank) < 0)
        {
            // Will Eventually need a popup screen here to say you lost and streak is reset to 0
            self?.resetApp()
        }
    }
}
func timedUpdate()
{
让initialBank=2000
让dateOfInstallation=UserDefaults.standard.object(forKey:“installDate”)
设秒=date.timeIntervalSince(安装日期为!date)/8.64
设bestStreak=(UserDefaults.standard.integer(forKey:“bestStreak”))
设天数=秒/86400
打印(秒/8.64)
打印(UserDefaults.standard.object(forKey:“bestStreak”)!)
如果(整数(天)>最佳条纹)
{
UserDefaults.standard.set(天,forKey:“bestStreak”)
}
bestStreakLabel.text=“\(Int(bestStreak))天”
currentStreakLabel.text=“\(整数(天))天”
currentStreakBar.progress=CGFloat(浮动(天数)/浮动(最佳浮动))
bestStreakBar.progress=1
GettodaySteps{[弱自我]步进
self?.bankTotalAbel.text=“\(Int(步长)-Int(秒/8.64)+Int(初始值银行))”
self?.circleLabel.progress=Double((双(步)-双(秒)+双(初始银行))/10000)
如果(Int(步数)-Int(秒)+Int(初始银行)<0)
{
//最终将需要一个弹出屏幕在这里说你输了,条纹重置为0
self?.resetApp()
}
}
}

当我打印秒的值时,它总是相同的小数,非常接近0。提前感谢您的帮助

为什么第一次初始化时要将
seconds
除以
8.64
,然后在打印时再除以?在打印之前,您基本上是将秒数除以
74.6496
。您的
date
对象实例化在哪里?是否确定函数调用之间至少有一个
date
dateOfInstallation
发生了更改?请在代码中编辑,谢谢。打印的数字已更改,但在每次函数调用后仍不更改。日期更改的唯一位置是resetApp()函数,该函数不应在此代码段中运行。
date
仅在
resetApp()
中更改,而此代码段中不运行。所以<代码>安装日期从不更改和日期从不更改,这意味着---
日期。时间间隔(安装日期为!日期)
将永远不会更改。为什么在首次初始化时将
秒数
除以
8.64
,然后在打印时再次除以?在打印之前,您基本上是将秒数除以
74.6496
。您的
date
对象实例化在哪里?是否确定函数调用之间至少有一个
date
dateOfInstallation
发生了更改?请在代码中编辑,谢谢。打印的数字已更改,但在每次函数调用后仍不更改。日期更改的唯一位置是resetApp()函数,该函数不应在此代码段中运行。
date
仅在
resetApp()
中更改,而此代码段中不运行。所以<代码>安装日期永不更改和日期永不更改,这意味着---
日期。时间间隔(安装日期为!日期)
将永不更改。