簡體   English   中英

SwiftUI 中的 didSet 有替代方案嗎?

[英]is there an alternative for didSet in SwiftUI?

我想在獲得 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)
        }
    }
}
}

如果我正確理解了您的期望(擁有您的代碼),則有幾種選擇可以實現目標:

選項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"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM