[英]SwiftUI var: willSet, didSet
我在 SwiftUI 應用程序中有這種代碼:
@Published var myFlag = false {
willSet {
... useful code ...
objectWillChange.send()
}
}
它或多或少有效,但要准確獲得我需要的東西,我想要這樣的東西:
@Published var myFlag = false {
didSet {
... useful code ...
objectDidChange.send()
}
}
原因很簡單,我希望在 myFlag 更新而不是之前得到通知。 不過,它似乎不是這樣工作的。 還有其他方法可以得到我想要的嗎?
除了我正在使用這段代碼:
.onReceive(self.appState.$myFlag) {...}
在 ContentView.swift 內
@Published
屬性隨意時自動發布willSet
://developer.apple.com/documentation/combine/published
如果您更喜歡在didSet
期間發布,請刪除@Published
並手動發布。
import SwiftUI
class ManualOObject: ObservableObject {
var someValue: Int = 0{
willSet{
print("willSet - \(someValue)")
}
didSet{
print("didSet - \(someValue)")
objectWillChange.send()
}
}
init() {
for n in 0...5 {
DispatchQueue.main.asyncAfter(deadline: .now() + Double(n)) {
print("n = \(n.description)")
self.someValue = n
}
}
}
}
struct ManualOOView: View {
@ObservedObject var manualOObject = ManualOObject()
var body: some View {
Text(manualOObject.someValue.description).onReceive(manualOObject.objectWillChange, perform: { _ in
print("UI received = \(manualOObject.someValue)")
})
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.