【发布时间】:2019-05-21 06:32:38
【问题描述】:
在我的应用程序中,我们发送 TimeStamp 以及用于 API 调用的参数以从中获取数据。我可以使用任何随机字符串来传递值,但我使用的是 TimeStamp,因为它每次都会不同,因此我每次都可以获得新数据而无需兑现。现在我们的要求是每小时更新一次 TimeStamp,这样每次我调用 API 而不是每次都显示新数据时,数据将每小时更新一次。
我的 API 如下所示:
let url = "https://myurl.api.getthisapidata?id=\(someID)&nocache=\(timeStamp)"
现在我想代替 TimeStamp 发送一些随机字符串,例如 "\(arc4random())"。但我希望这个随机字符串仅在一小时后更改,以便我转到其他视图或关闭应用程序并在一小时前打开它,这个随机字符串应该保持不变。
我希望你能理解我想要表达的意思。
时间戳扩展:
extension Date {
var ticks: UInt64 {
let timeStamp = UInt64((self.timeIntervalSince1970 + 62_135_596_800) * 10_000_000)
return timeStamp
}
}
用法:
print(Date().ticks)
【问题讨论】:
-
我认为您仍然应该使用
timeStamp,但这次您需要将其存储在Userdefaults中并每次检查时差是否超过一个小时,然后发送并存储新的时间戳,否则使用保存了一个。 -
发送
Int(timeStamp) / 3600怎么样,每小时会有一个不同的号码? -
@Sweeper 它不是那样工作的。我将添加获取时间戳的代码,以便您可以提出任何更改建议。
-
@Kamran 如何做到这一点,我尝试了几种使用 Timer 类的不同方法。但他们没有工作。
-
您的“滴答声”以 100 纳秒为间隔递增,比较 stackoverflow.com/a/39830452/1187415。 @Sweeper 的建议类似于
Int(Date().timeIntervalSince1970)/3600,它会每小时增加一次。