Skip to content

Instantly share code, notes, and snippets.

@strzempa
Created October 11, 2019 05:30
Show Gist options
  • Save strzempa/a46939399909166d48da6433a0adbc97 to your computer and use it in GitHub Desktop.
Save strzempa/a46939399909166d48da6433a0adbc97 to your computer and use it in GitHub Desktop.
extension UserDefaults {
@objc dynamic var yourKey: Bool {
return bool(forKey: "yourKey")
}
}
protocol UserDefaultsObservable: AnyObject {
var observation: Any? { get set }
typealias UserDefaultsCompletionHandler = (_ defaults: UserDefaults) -> Void
func addObservation(completion: UserDefaultsCompletionHandler?)
}
extension UserDefaultsObservable {
func addObservation(completion: UserDefaultsCompletionHandler?) {
observation = UserDefaults.standard.observe(\.yourKey, options: [.new], changeHandler: { defaults, _ in
completion?(defaults)
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment