【问题标题】:SwitfUI Published on static propertySwiftUI 发布在静态属性上
【发布时间】:2022-01-06 14:45:31
【问题描述】:

我有一个这样定义的视图模型:

class MyViewModel: ObservableObject {
    @Published public var logs: String = ""
}

我想从我的 Swift 代码的全局范围修改日志属性,而不像这样初始化 MyViewModel:

MyViewModel.logs = "log message\n"

我尝试将日志属性设为静态:

@Published public static var logs: String = ""

但是我得到了这个错误:

'wrappedValue' 不可用:@Published 仅适用于类的属性

如何在没有 MyViewModel 实例的情况下修改已发布的属性?

【问题讨论】:

  • 编译器信息在这里很清楚,只是没有什么要补充的。
  • 在这种情况下,如何在不使用 MyViewModel 实例的情况下从全局范围修改发布的属性?
  • EnvironmentObject?

标签: swift mvvm swiftui viewmodel


【解决方案1】:

您可以尝试使用单例模式,例如

class MyViewModel: ObservableObject {
    @Published public var logs: String = ""
    
    public static let shared = MyViewModel()  // <--- here
}

然后

MyViewModel.shared.logs = "log message\n"

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多