热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

如何在SwiftUI中使用UserDefaults?

如何解决《如何在SwiftUI中使用UserDefaults?》经验,为你挑选了1个好方法。



1> Marc T...:

通常,使用caram的方法是可以的,但是代码存在很多问题,SmushyTaco无法使其正常工作。在下面,您将找到“开箱即用”的工作解决方案。

1. UserDefaults propertyWrapper

import Foundation

@propertyWrapper
struct UserDefault {
    let key: String
    let defaultValue: T

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

    var wrappedValue: T {
        get {
            return UserDefaults.standard.object(forKey: key) as? T ?? defaultValue
        }
        set {
            UserDefaults.standard.set(newValue, forKey: key)
        }
    }
}

2. UserSettings类

final class UserSettings: ObservableObject {

    let objectWillChange = PassthroughSubject()

    @UserDefault("ShowOnStart", defaultValue: true)
    var showOnStart: Bool {
        willSet {
            objectWillChange.send()
        }
    }
}

3. SwiftUI视图

struct ContentView: View {

@ObservedObject var settings = UserSettings()

var body: some View {
    VStack {
        Toggle(isOn: $settings.showOnStart) {
            Text("Show welcome text")
        }
        if settings.showOnStart{
            Text("Welcome")
        }
    }
}


推荐阅读
author-avatar
dishonest的你_507
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有