Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @propertyWrapper
- struct Expirable<Value: ExpressibleByNilLiteral> {
- let duration: TimeInterval
- private var expirationDate = Date()
- private var innerValue: Value = nil
- private var hasExpired: Bool {
- expirationDate < Date()
- }
- init(duration: TimeInterval) {
- self.duration = duration
- }
- var value: Value {
- get {
- hasExpired ? nil : innerValue
- }
- set {
- expirationDate = Date().addingTimeInterval(duration)
- innerValue = newValue
- }
- }
- }
- struct Tokens {
- @Expirable(duration: 3) static var authentication: String?
- }
- Tokens.authentication = "abc"
- sleep(2)
- Tokens.authentication // "abc"
- sleep(2)
- Tokens.authentication // nil
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement