我有一个使用字符串插值使示例与用户更相关的消息示例的列表。因为我发现在初始化类之前不能使用变量,所以将其创建为空的[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)."
]
}
}
感谢您的帮助:)
现实世界不像SwiftUI世界。仅改变this
也不会神奇地改变messages
,只是因为messages
是使用插值this
形成的。当this
更改时,[[您必须再次重新设置messages
。