A Property Wrapper to store a value anywhere
StoredIn
StoredIn
is a simple property wrapper library to store any value in anywhere.
Installation
Please use the Swift Package Manager
.
dependencies: [
.package(url: "https://github.com/moriturus/StoredIn.git", .upToNextMajor(from: "1.0.0"))
]
Usage
import StoredIn
// implement the `Store` where your data are saved.
final class SharedDictionary: Store {
var inner: [String: Any] = [:]
func containsValue(forKey key: String) -> Bool {
self.inner[key] != nil
}
func value<S>(forKey key: String) -> S? where S : Storable {
self.inner[key] as? S
}
func set<S>(value: S, forKey key: String) where S : Storable {
self.inner[key] = value
}
}
let sharedDictionary = SharedDictionary()
struct Foo {
@StoredIn(store: sharedDictionary, key: "key", default: 0, strategy: .default)
var value: Int
}
var foo = Foo()
let x = foo.value // x == 0
foo.value = 1
sharedDictionary.inner["key"] as? Int == foo.value // true
Strategy
default
- The default strategy. You can change stored value as many times as you need.
once
- You can store a value only once.
License
This software is released under the MIT License. See LICENSE file for details.