如何使自定义属性包装器可以与@State进行绑定?

问题描述

我创建了一个自定义属性包装程序,该属性包装程序以文件的setter和getter的形式读写文件。

@EnableMongoRepositories

我现在想像在设置视图中那样使用它:

@propertyWrapper struct Specifier<Value> {
    let key: String
    let defaultValue: Value
    let plistPath: String
    
    var prefs: NSDictionary {
        NSDictionary(contentsOfFile: plistPath) ?? NSDictionary()
    }

    var wrappedValue: Value {
        get {
            return prefs.value(forKey: key) as? Value ?? defaultValue
        }
        set {
            prefs.setValue(newValue,forKey: key)
            prefs.write(toFile: plistPath,atomically: true)
        }
    }
}

出现以下错误:

struct PrefsView: View {
    @Specifier<Bool>(key: "enable",defaultValue: true,plistPath: "/Library/path/to/Prefs.plist") private var enable

    var body: some View {
        Form {
            Toggle("Enable",isOn: $enable)
        }
    }

}

我如何实现写入和读取文件以设置和获取变量但还允许其绑定到值的这种效果?

注意:我的项目不需要是“ App Store Legal”

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)