簡體   English   中英

有沒有辦法在更改類中的屬性時讓didSet工作?

[英]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.

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