This package contains UserDefaults
property wrapper. The property wrapper has statically typed keyes and provides a conveniece to observe UserDefaults
changes.
To install this package just add the follwing in yor package
.package(url: "https://github.com./DanielMandea/ios-observable-user-defaults", from: "1.0.0"),
Implementation
// Declare a new key
extension ObservableKey {
static let sdkPort: ObservableKey = "sdkPort"
}
// Create my class
class SyncExample {
@ObservableUserDefaults(key: .sdkPort, defaultValue: 8080)
var sdkPort: Int
}
// Initialize my class
var myClass = SyncExample()
// Observe changes
var observation = myClass.$sdkPort.observe { old, new in
print("Changed from: \(old) to \(new)")
}
// Make some changes
myClass.sdkPort = 443
Output
Changed from: 8080 to 443
Support for custom UserDefaults
// Create my class
class SyncExample {
@ObservableUserDefaults(key: .sdkPort, defaultValue: 8080, userDefaults: myUserDefaults)
var sdkPort: Int
}