You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
2.9 KiB
121 lines
2.9 KiB
//
|
|
// InnerDatabase.swift
|
|
// GME Remit
|
|
//
|
|
// Created by InKwon James Kim on 17/07/2019.
|
|
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
protocol KeyProtocol: RawRepresentable, CaseIterable {}
|
|
|
|
class UserDefaultsWrapper<Keys: KeyProtocol> where Keys.RawValue == String {
|
|
func float(_ key: Keys) -> Float? {
|
|
return UserDefaults.standard.float(forKey: key.rawValue)
|
|
}
|
|
|
|
func string(_ key: Keys) -> String? {
|
|
return UserDefaults.standard.string(forKey: key.rawValue)
|
|
}
|
|
|
|
func bool(_ key: Keys) -> Bool {
|
|
return UserDefaults.standard.bool(forKey: key.rawValue)
|
|
}
|
|
|
|
func double(_ key: Keys) -> Double? {
|
|
return UserDefaults.standard.double(forKey: key.rawValue)
|
|
}
|
|
|
|
func integer(_ key: Keys) -> Int {
|
|
return UserDefaults.standard.integer(forKey: key.rawValue)
|
|
}
|
|
|
|
func object(_ key: Keys) -> Any? {
|
|
return UserDefaults.standard.object(forKey: key.rawValue)
|
|
}
|
|
}
|
|
|
|
extension UserDefaultsWrapper {
|
|
@discardableResult
|
|
func set(_ url: URL?, _ key: Keys) -> Self {
|
|
UserDefaults.standard.set(url, forKey: key.rawValue)
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func set(_ value: Any?, _ key: Keys) -> Self {
|
|
UserDefaults.standard.set(value, forKey: key.rawValue)
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func set(_ value: Bool?, _ key: Keys) -> Self {
|
|
UserDefaults.standard.set(value, forKey: key.rawValue)
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func set(_ value: Double?, _ key: Keys) -> Self {
|
|
UserDefaults.standard.set(value, forKey: key.rawValue)
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func set(_ value: String?, _ key: Keys) -> Self {
|
|
UserDefaults.standard.set(value, forKey: key.rawValue)
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func set(_ value: Int?, _ key: Keys) -> Self {
|
|
UserDefaults.standard.set(value, forKey: key.rawValue)
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func set(_ value: Float?, _ key: Keys) -> Self {
|
|
UserDefaults.standard.set(value, forKey: key.rawValue)
|
|
return self
|
|
}
|
|
}
|
|
|
|
extension UserDefaultsWrapper {
|
|
@discardableResult
|
|
func remove(_ key: Keys) -> Self {
|
|
UserDefaults.standard.removeObject(forKey: key.rawValue)
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func remove(_ keys: [Keys]) -> Self {
|
|
keys.forEach {
|
|
UserDefaults.standard.removeObject(forKey: $0.rawValue)
|
|
}
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func removeAll() -> Self {
|
|
Keys.allCases.forEach {
|
|
UserDefaults.standard.removeObject(forKey: $0.rawValue)
|
|
}
|
|
return self
|
|
}
|
|
}
|
|
|
|
extension UserDefaultsWrapper {
|
|
@discardableResult
|
|
func debugPrint(_ key: Keys) -> UserDefaultsWrapper {
|
|
print("\(key.rawValue): \(object(key) as Any)")
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func debugPrintAllElement() -> Self {
|
|
print("\(Keys.self)'s All Elements")
|
|
|
|
Keys.allCases.forEach {
|
|
print("\($0.rawValue): \(object($0) as Any)")
|
|
}
|
|
return self
|
|
}
|
|
}
|