前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为 @CloudStorage 添加了类 @Published 的能力

为 @CloudStorage 添加了类 @Published 的能力

作者头像
东坡肘子
发布2022-07-28 13:12:45
5200
发布2022-07-28 13:12:45
举报
文章被收录于专栏:肘子的Swift记事本

我重新修改了 CloudStorage 的代码,现在可以同 AppStorage 完全一样将 UserDefaults 和 NSUbiquitousKeyValueStore 汇总到一起,在 SwiftUI 中统一管理了。

下周我们将聊聊它的实现原理 —— 【如何为属性包装器添加类 Published 的能力】

代码语言:javascript
复制
class Settings:ObservableObject {
       @AppStorage("name") var name = "fat"
       @AppStorage("age") var age = 5
       @CloudStorage("readyForAction") var readyForAction = false
       @CloudStorage("speed") var speed: Double = 0
}

struct DemoView: View {
    @StateObject var settings = Settings()
    var body: some View {
        Form {
            TextField("Name",text: $settings.name)
            TextField("Age", value: $settings.age, format: .number)
            Toggle("Ready", isOn: $settings.readyForAction)
                .toggleStyle(.switch)
            TextField("Speed",value: $settings.speed,format: .number)
        }
        .frame(width: 400, height: 400)
    }
}

CloudStorage 原作者尚未合并修改后的代码,目前可下载我的 Fork 版本[1]

关于 NSUbiquitousKeyValueStore 请参阅 在 SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据[2]

关于 AppStorage 可以阅读 @AppStorage 研究[3]

因为微信公众号中的文章只能修改10个字符,因此只有博客上的文章 www.fatbobman.com 才会保持更新,望见谅。

参考资料

[1] Fork 版本: https://github.com/fatbobman/CloudStorage

[2] 在 SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据: https://www.fatbobman.com/posts/nsubiquitousKeyvalueStore/

[3] @AppStorage 研究: https://fatbobman.com/posts/appstorage/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 肘子的Swift记事本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档