SWIFT 在 24 小时后使单例实例过期

标签 swift

<分区>

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

我有一个单例类函数,它在调用时销毁它。我需要确保在单例初始化后每 24 小时调用一次此类函数。

我进行了大量搜索,但我确实找不到任何有关 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") ?? ""
    }
}

最佳答案

这样:

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

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

关于SWIFT 在 24 小时后使单例实例过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57292058/

相关文章:

swift - 如何在 ARKit 3.0 中启用 `Depth of Field` 选项?

swift - iOS12 : transitionController was deprecated

ios - 如何快速返回异步内部函数内的外部函数?

swift/火力地堡 : How do I properly store a Facebook user into Firebase database when they create an account?

javascript - 从 javascript/angularjs 背景学习 Objective-C/swift

ios - 火力地堡电子邮件验证与短信之类的代码

ios - 如何根据UITableView的内容高度设置高度?

Swift:NSTableView拖动以重新排序项目如何在拖动过程中显示单元格

xcode - 按字典中的 NSDates 对字典数组进行排序

Swift:将按钮移至键盘上方并停留