Preferences is Simple, Extensible, Strongly Typed UserDefaults/Keychain/[Put Yours] for iOS, macOS, tvOS (macOS, tvOS support comming soon).
Instantiate your variant of preferences:
let preferences = KeychainPreferences() // or UserDefaults.standard
With AnyPreferenceKey
:
let key = AnyPreferenceKey<String>(rawKey: "aKey")
With custom key conforming to protocol PreferenceKey
:
struct AddressKey: PreferenceKey {
let name: String
typealias PreferenceValueType = String
var rawKey: String { return name }
}
let key = AddressKey(name: "aKey")
PreferenceKey
have an assosiated type which should conform to Codable
protocol. You can save to preferences anything that conforms to Codable
including String
, Date
, Int
, etc.
Set a value with AnyPreferenceKey:
try preferences.set("PreferenceValue", for: key)
let value: String? = try preferences.get(key)
try preferences.set(nil, for: key)
Define value:
struct Name: Codable {
let first: String
let second: String
}
Define key:
struct NameKey: PreferenceKey {
let name: String
typealias PreferenceValueType = Name
var rawKey: String { return name }
}
Use:
let preferences = KeychainPreferences()
let myName = Name(first: "Alex", second: "B")
let currentUserKey = NameKey(name: "com.app.current_user")
do {
try preferences.set(myName, for: currentUserKey)
let savedValue: Name? = try preferences.get(currentUserKey)
print("Saved value: \(String(describing: savedValue))")
}
catch {
print("Can't save value with error: \(error)")
}
Preferences
.link |
Stars: 0 |
Last commit: 1 year ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics