我想在获得User()之后立即更改名称。 DidSet在这里不起作用。 SwiftUI中是否有didSet的替代方案?
struct Person: Identifiable {
let id = UUID()
var name: String
var number: Int
}
class User: ObservableObject {
@Published var array = [Person(name: "Nick", number: 3),
Person(name: "John", number: 2)
]
}
struct ContentView: View {
@ObservedObject var user = User() {
didSet {
user.array[0].name = "LoL"
}
}
var body: some View {
VStack {
ForEach (user.array) { row in
Text(row.name)
}
}
}
}
答案 0 :(得分:0)
如果我正确理解了您的期望(拥有您的代码),则有两种方法可以实现目标:
选项1:在init
中设置创建的用户(作为在init
之前创建的属性)
init() {
self.user.array[0].name = "LoL"
}
选项2:在视图外观上进行设置
VStack {
ForEach (user.array) { row in
Text(row.name)
}
}
.onAppear {
self.user.array[0].name = "LoL"
}