Open goodocy opened 4 years ago
Hey @goodocy - great question. Not sure if it's possible with how currently KeyPaths are created, though. You can try and use multiple adapters with multiple key stores, however:
struct FooBar1DefaultsKeys: DefaultsKeyStore {
var key: DefaultsKey<String> { .init("foo.bar1.key", defaultValue: "") }
}
struct FooBar2DefaultsKeys: DefaultsKeyStore {
var key: DefaultsKey<String> { .init("foo.bar2.key", defaultValue: "") }
}
let adapter1 = DefaultsAdapter(defaults: UserDefaults.standard, keyStore: FooBar1DefaultsKeys())
_ = adapter1.key
_ = adapter1[\.key]
you could also try with creating your own struct that holds your adapters:
struct Defaults {
static let fooBar1 = DefaultsAdapter(defaults: UserDefaults.standard, keyStore: FooBar1DefaultsKeys())
}
_ = Defaults.fooBar1.key
_ = Defaults.fooBar1[\.key]
Let me know if it helps 👍
Keys.swift
Test.swift
How can I work?