Created
March 3, 2020 18:09
-
-
Save foxicode/612f2160b3325de97cdd22fd1c4caf9d to your computer and use it in GitHub Desktop.
Swift extensions to load and save data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
extension Int { | |
init?(key: String) { | |
guard UserDefaults.standard.value(forKey: key) != nil else { return nil } | |
self.init(UserDefaults.standard.integer(forKey: key)) | |
} | |
func store(key: String) { | |
UserDefaults.standard.set(self, forKey: key) | |
UserDefaults.standard.synchronize() | |
} | |
} | |
extension Bool { | |
init?(key: String) { | |
guard UserDefaults.standard.value(forKey: key) != nil else { return nil } | |
self.init(UserDefaults.standard.bool(forKey: key)) | |
} | |
func store(key: String) { | |
UserDefaults.standard.set(self, forKey: key) | |
UserDefaults.standard.synchronize() | |
} | |
} | |
extension Float { | |
init?(key: String) { | |
guard UserDefaults.standard.value(forKey: key) != nil else { return nil } | |
self.init(UserDefaults.standard.float(forKey: key)) | |
} | |
func store(key: String) { | |
UserDefaults.standard.set(self, forKey: key) | |
UserDefaults.standard.synchronize() | |
} | |
} | |
extension Double { | |
init?(key: String) { | |
guard UserDefaults.standard.value(forKey: key) != nil else { return nil } | |
self.init(UserDefaults.standard.double(forKey: key)) | |
} | |
func store(key: String) { | |
UserDefaults.standard.set(self, forKey: key) | |
UserDefaults.standard.synchronize() | |
} | |
} | |
extension Data { | |
init?(key: String) { | |
guard let data = UserDefaults.standard.data(forKey: key) else { return nil } | |
self.init(data) | |
} | |
func store(key: String) { | |
UserDefaults.standard.set(self, forKey: key) | |
UserDefaults.standard.synchronize() | |
} | |
} | |
extension String { | |
init?(key: String) { | |
guard let str = UserDefaults.standard.string(forKey: key) else { return nil } | |
self.init(str) | |
} | |
func store(key: String) { | |
UserDefaults.standard.set(self, forKey: key) | |
UserDefaults.standard.synchronize() | |
} | |
} | |
extension Array where Element == Any { | |
init?(key: String) { | |
guard let array = UserDefaults.standard.array(forKey: key) else { return nil } | |
self.init() | |
self.append(contentsOf: array) | |
} | |
func store(key: String) { | |
UserDefaults.standard.set(self, forKey: key) | |
UserDefaults.standard.synchronize() | |
} | |
} | |
extension Dictionary where Key == String, Value == Any { | |
mutating func merge(dict: [Key: Value]) { | |
for (k, v) in dict { | |
updateValue(v, forKey: k) | |
} | |
} | |
init?(key: String) { | |
guard let dict = UserDefaults.standard.dictionary(forKey: key) else { return nil } | |
self.init() | |
self.merge(dict: dict) | |
} | |
func store(key: String) { | |
UserDefaults.standard.set(self, forKey: key) | |
UserDefaults.standard.synchronize() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment