总要说点什么
import HandyJSON extension Bool: HandyJSON { } extension String: HandyJSON { } extension Int: HandyJSON { } enum UserDefaultsWrapperKey { case base(String) case handyJSON(String) } @propertyWrapper struct UserDefaultsWrapper<T: HandyJSON> { let key: UserDefaultsWrapperKey let defaultValue: T init(key: UserDefaultsWrapperKey, defaultValue: T) { self.key = key self.defaultValue = defaultValue } var wrappedValue: T { get { switch key { case .base(let keyString): return UserDefaults.standard.value(forKey: keyString) as? T ?? defaultValue case .handyJSON(let keyString): if let string = UserDefaults.standard.value(forKey: keyString) as? String, let object = T.deserialize(from: string) { return object } return defaultValue } } set { switch key { case .base(let keyString): UserDefaults.standard.set(newValue, forKey: keyString) case .handyJSON(let keyString): UserDefaults.standard.set(newValue.toJSONString() ?? "", forKey: keyString) } } } }
--EOF--
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于