[英]SwiftUI - is it possible to get didSet to fire when changing a @Published struct?
[英]Is there a way to get didSet to work when changing a property in a class?
我有一個類作為屬性與屬性觀察者。 如果我在該類中更改某些內容,是否有辦法觸發didSet,如示例所示:
class Foo {
var items = [1,2,3,4,5]
var number: Int = 0 {
didSet {
items += [number]
}
}
}
var test: Foo = Foo() {
didSet {
println("I want this to be printed after changing number in test")
}
}
test.number = 1 // Nothing happens
沒有任何事情發生,因為觀察者正在test
,這是一個Foo實例。 但你改變了test.number
,而不是test
自己。 Foo是一個類,類是引用類型,因此它的實例是可變的。
如果要查看日志消息,請將test
本身設置為其他值(例如,不同的Foo()
)。
或者,將println
語句添加到另一個 didSet
,這是你已經在Foo的number
屬性上獲得的。
或者,使Foo成為結構而不是類; 更改struct屬性會替換struct,因為struct是值類型,而不是引用類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.