diff --git a/Sources/Boutique/CachedValue.swift b/Sources/Boutique/CachedValue.swift index 4b443bb..3f4311b 100644 --- a/Sources/Boutique/CachedValue.swift +++ b/Sources/Boutique/CachedValue.swift @@ -8,18 +8,19 @@ internal final class CachedValue { init(retrieveValue: @escaping () -> Item) { self.retrieveValue = retrieveValue - self.cachedValue = self.retrieveValue() } func set(_ value: Item) { self.cachedValue = value } - var wrappedValue: Item? { + var wrappedValue: Item { if let cachedValue { - cachedValue + return cachedValue } else { - self.retrieveValue() + let retrievedValue = self.retrieveValue() + self.cachedValue = retrievedValue + return retrievedValue } } } diff --git a/Sources/Boutique/StoredValue.swift b/Sources/Boutique/StoredValue.swift index 43ea42d..c418cb7 100644 --- a/Sources/Boutique/StoredValue.swift +++ b/Sources/Boutique/StoredValue.swift @@ -62,7 +62,7 @@ public struct StoredValue { /// The currently stored value public var wrappedValue: Item { - self.cachedValue.retrieveValue() + self.cachedValue.wrappedValue } /// A ``StoredValue`` which exposes ``set(_:)`` and ``reset()`` functions alongside a ``publisher``.