SwiftUI环境变量中的字符串插值未更新

问题描述 投票:0回答:1

我有一个使用字符串插值使示例与用户更相关的消息示例的列表。因为我发现在初始化类之前不能使用变量,所以将其创建为空的[String],然后在init()之后分配一个值。此外,该类还用作@EnvironmentVariable,因此更改后所有内容都会发送给发布者,这就是我认为存在的问题–我认为插值存在一些问题,无法让其订阅发布者更改。该类的定义如下:

class GlobalVars: ObservableObject {

    let objectWillChange = PassthroughSubject<GlobalVars,Never>()

    var this: String = "a value" {
        didSet {
            objectWillChange.send(self)
        }
    }
    var messages: [String] {
        didSet {
            objectWillChange.send(self)
        }
    }

    init() {
        messages = [
            "a list",
            "with several variables",
            "defined above",
            "and one modified within the init() statement",
            "referenced within strings",
            "like \(this)."
        ]
    }
}

感谢您的帮助:)

swift swiftui string-interpolation
1个回答
0
投票

现实世界不像SwiftUI世界。仅改变this也不会神奇地改变messages,只是因为messages是使用插值this形成的。当this更改时,[[您必须再次重新设置messages

© www.soinside.com 2019 - 2024. All rights reserved.