gpt4 book ai didi

swift - 如何不断地重新计算主要参数是当前时间的函数

转载 作者:行者123 更新时间:2023-11-30 10:41:06 25 4
gpt4 key购买 nike

我正在尝试根据当前时间计算卫星的轨道位置和其他数据点作为函数。我目前有一个名为 Calculations 的类,其中包含我的所有计算,包括主要的两个函数 keplerianElementsToECEF 和 ecefToData。在 View Controller 的 View 中,我输入了 6 个开普勒元素、纪元和计算日期(当前日期)。然而,虽然计算运行并且我的表格 View 准确地显示了值,但这些值不会更新,并且表格 View 仅显示 View 加载的初始日期的计算。我几乎可以肯定这个问题是由于将日期放置在 View Controller 的 View 中确实加载而引起的,但是我不知道如何解决这个问题。

  var date = Date()
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
var dateAtCalculationAsString: String = dateFormatter.string(from: date)

// converting User's current time to UTC time to aid in computations
let dateAtCalculation = localToUTC(date: dateAtCalculationAsString)
print(dateAtCalculation)

//let epoch = epoch, let inclination = inclination, let longitudeAscendingNode = longitudeAscendingNode, let eccentricity = eccentricity, let argumentPerigee = argumentPerigee, let meanAnomaly = meanAnomaly, let meanMotion = meanMotion {

Calculations.shared.keplerianElementsToECEF(meanMotion: meanMotion!, eccentricity: eccentricity! , Inclination: inclination!, LongitudeAscendingNode: longitudeAscendingNode!, argumentPerigee: argumentPerigee!, M0: meanAnomaly!, epoch: epoch!, date: dateAtCalculation)


datavalues = Calculations.shared.ecefToData()

最佳答案

每当您需要定期更新某些内容或经过一段时间后,您可以考虑 Timer 。设置一个新的重复 Timer 实例,并使用一个更新您的计算的闭包,然后重新加载您的表。

例如,假设您发布的代码位于名为 performCalculations() 的函数内。你可以这样做:

var recalculateTimer: Timer!

func performCalculations() {
// all the date math
}

func viewDidLoad() {
super.viewDidLoad()
performCalculations()
recalculateTimer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] timer in
guard let self = self else {
timer.invalidate()
return
}
self.performCalculations()
self.tableView.reloadData()
}
}

这将重新运行您的数学运算并每秒更新数据值,然后重新加载表格。当您的 View Controller 解除分配时,它还会停止计时器,因此,如果您关闭包含此 Controller 的模式演示或将其从导航堆栈中弹出,您将不会永远更新。

关于swift - 如何不断地重新计算主要参数是当前时间的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56782793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com