Some useful Swift Property Wrappers
FHPropertyWrappers
Some useful Swift Property Wrappers.
Will be expanded over time.
Requirements
- macOS 10.10+
- iOS 9.0+
- tvOS 9.0+
Installation
Swift Package Manager
Add the following to the dependencies of your Package.swift
:
.package(url: "https://github.com/FelixHerrmann/FHPropertyWrappers.git", from: "x.x.x")
Manual
Download the files in the Sources folder and drag them into you project.
Stored
A property wrapper which reads and writes the wrapped value in the UserDefaults
store.
It supports all the types that are allowed by UserDefaults
.
Check all the supported types here.
@Stored("string") var string = ""
@Stored("int") var int: Int
@Stored("array") var array: [String]
@Stored("dictionary") var dictionary [String: Int]
The default value is based on the
defaultStoredValue
if nothing is set.
In addition to that, Optional
, RawRepresentable
and Codable
are supported too.
For non-RawRepresentable
enums use Codable
.
@Stored("optional") var optional: String?
enum Enumeration: String, Storable {
case firstCase
case secondCase
static var defaultStoredValue: Enumeration {
return .firstCase
}
}
@Stored("enumeration") var enumeration: Enumeration
struct CustomType: Codable, Storable {
let name: String
static var defaultStoredValue: CustomType {
return CustomType(name: "")
}
}
@Stored("codable") var codable: CustomType
The wrapped value must conform to
Storable
.
SecureStored
A property wrapper which reads and writes the wrapped value in the Keychain
.
It supports all the base types, most of them rely on Codable
.
Check all the supported types here.
@SecureStored("string") var string = ""
@SecureStored("int") var int: Int
@SecureStored("array") var array: [String]
@SecureStored("dictionary") var dictionary [String: Int]
The default value is based on the
defaultStoredValue
if nothing is set.
In addition to that, Optional
, RawRepresentable
and Codable
are supported too.
For non-RawRepresentable
enums use Codable
.
@SecureStored("optional") var optional: String?
enum Enumeration: String, SecureStorable {
case firstCase
case secondCase
static var defaultStoredValue: Enumeration {
return .firstCase
}
}
@SecureStored("enumeration") var enumeration: Enumeration
struct CustomType: Codable, SecureStorable {
let name: String
static var defaultStoredValue: CustomType {
return CustomType(name: "")
}
}
@SecureStored("codable") var codable: CustomType
The wrapped value must conform to
SecureStorable
.