小编day*_*sha的帖子

UserDefault 属性包装器不保存值低于 iOS 13 的 iOS 版本

我正在使用属性包装器来保存我的用户默认值。在 iOS 13 设备上,此解决方案效果很好。但是,在 iOS 11 和 iOS 12 上,这些值不会保存到用户默认值中。我读到属性包装器向后兼容,所以我不知道为什么这不适用于较旧的 iOS 版本。

这是属性包装器:

@propertyWrapper
struct UserDefaultWrapper<T: Codable> {
    private let key: String
    private let defaultValue: T

    init(key: String, defaultValue: T) {
        self.key = key
        self.defaultValue = defaultValue
    }

    var wrappedValue: T {
        get {
            guard let data = UserDefaults.standard.object(forKey: key) as? Data else {
                // Return defaultValue when no data in UserDefaults
                return defaultValue
            }

            // Convert data to the desire data type
            let value = try? JSONDecoder().decode(T.self, from: data) …
Run Code Online (Sandbox Code Playgroud)

ios swift swift5 property-wrapper

6
推荐指数
1
解决办法
1159
查看次数

标签 统计

ios ×1

property-wrapper ×1

swift ×1

swift5 ×1