首页 > 解决方案 > 如何在 swift5 中每 30 分钟调用一次 API?

问题描述

我正在调用一个 API,但该数据不会经常更改,并且我将数据存储在核心数据中。我希望该 API 在 30 分钟内只调用一次。仅当从上次 API 调用超过 30 分钟时才调用 API 是否有更好的方法。我可以想到基于 Timer,但想知道是否还有其他更好的方法可以做到这一点?

标签: iosswift

解决方案


如果您随机调用 api,那么在内存中为最后一次成功调用保存一个变量可能就足够了。如果您希望自动调用 API,最好的方法是设置一个计时器。

如果您希望您的应用程序禁止在 30 分钟内拨打新电话,那么这将是一个简单的示例:

(写这个是为了游乐场)

var lastCheck: Date?
let minimumMinutes = 60.0

func makeNetworkCall() {
    if let lastCheckDate = lastCheck, lastCheckDate.timeIntervalSinceNow < (30 * minimumMinutes) {
        debugPrint("Not making call, Didn't go 30 min yet")
        return
    }
    lastCheck = Date()

    debugPrint("Making network call!")

    // ... make call
}

makeNetworkCall() // Should make call
makeNetworkCall() // Should not make call
makeNetworkCall() // Should not make call

我没有测试上面的代码,但它应该可以工作。


推荐阅读