Created
November 18, 2020 03:16
-
-
Save Andy0570/aad0ed42fdefe139c08b94b7686e99e4 to your computer and use it in GitHub Desktop.
保存数据到 UserDefaults 偏好设置
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) | |
if #available(iOS 12.0, *) { | |
return | |
} else { | |
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) | |
if #available(iOS 12.0, *) { | |
return | |
} else { | |
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) | |
if #available(iOS 12.0, *) { | |
return | |
} else { | |
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) | |
if #available(iOS 12.0, *) { | |
return | |
} else { | |
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) | |
if #available(iOS 12.0, *) { | |
return | |
} else { | |
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) | |
if #available(iOS 12.0, *) { | |
return | |
} else { | |
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) | |
if #available(iOS 12.0, *) { | |
return | |
} else { | |
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) | |
if #available(iOS 12.0, *) { | |
return | |
} else { | |
UserDefaults.standard.synchronize() | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Usage: