【发布时间】:2020-11-20 14:29:54
【问题描述】:
入门问题:我正在尝试在数组 [Member] 中包含的变量发生更改后更新视图。按下下面代码中的按钮不会执行任何操作。在阅读了许多类似的主题后,我知道这是行不通的,但我不知道如何解决。
import SwiftUI
class Member: Identifiable, ObservableObject {
var id = UUID()
@Published var value:Int
init(value:Int) {
self.value = value
}
}
class Values:ObservableObject {
@Published var v1:Int = 1
@Published var v2:Int = 2
@Published var v3:Int = 3
}
struct ContentView: View {
var values = Values()
var items: [Member]
init() {
items = [Member(value: values.v1), Member(value: values.v2), Member(value: values.v3)]
}
var body: some View {
VStack {
HStack {
ForEach(items) {i in
Text("Value: \(i.value)")
}
}
Button("Change v2 = 0") {
values.v2 = 0
}
}
}
}
【问题讨论】:
-
我明白了,你改变了价值观,无论如何都不会加入会员。重新考虑你在这里尝试做什么,因为
v2是原始值,它只是在赋值时被复制。 -
@Asperi:你是对的。如何从复制原始值更改为绑定/链接?
-
听起来更像是表关系。一个
Value与多个Members相关。您可能会考虑使用CoreData。 -
这个问题看起来很相似,所以检查一下:stackoverflow.com/questions/62268309/…
-
@loremipsum:CoreData 看起来不是正确的解决方案,因为我的问题更多是关于应用程序中的数据流,而不是持久存储。