首页 > 解决方案 > SWIFT 在 24 小时后使单例实例过期

问题描述

我的应用程序中有一个单例,其中包含用于 API 访问的用户令牌。这些令牌每 24 小时在服务器端过期。我需要我的应用程序来做同样的事情。我将值存储在 UserDefaults 中。我知道这不安全:)。

我有一个单例的类函数,它在调用时会破坏()。我需要确保在单例初始化后每 24 小时调用一次此类 func。

我做了一堆搜索,我真的找不到任何关于 Swift 中过期对象的信息。也许我使用了错误的关键术语?这是我的代码:

class AimsiAdminController {

    private static var privateShared:AimsiAdminController?

    class func shared() -> AimsiAdminController {
        guard let unwrappedShared = privateShared else {
            privateShared = AimsiAdminController()
            return privateShared!
        }
        return unwrappedShared
    }

    class func destroy() {
        privateShared = nil
    }

    let securityToken: String
    private let defaults = UserDefaults.standard


    private init() {
        self.securityToken = self.defaults.string(forKey: "securityToken") ?? ""
    }
}

标签: swift

解决方案


这边走:

private init() {
    self.securityToken = self.defaults.string(forKey: "securityToken") ?? ""
    let interval = DispatchTime.now() + 24 * 60 * 60
    DispatchQueue.main.asyncAfter(deadline: interval) { AimsiAdminController.destroy() }
}

每次初始化,都会在给定时间后调用destroy


推荐阅读