0

クラスのオブジェクトを格納する配列があります。

class Apple {

    var color = "Red"

}

let myApple = Apple()

var apples = [Apple]()

apples.append(myApple)

// Func should be called here
myApple.color = "Blue"

let otherApple = Apple()

// Func should not be called here, 
// because otherApple is not a member of apples array
otherApple.color = "Green"

「apples」配列のメンバーのプロパティが変更されたときに関数を実行したいと考えています。この関数を呼び出すときは、プロパティが変更された配列の項目をパラメーターとして渡す必要があります。

on color プロパティを使おうと思ったのですdidSetが、その場合は otherApple のプロパティも変更されたときに関数が呼び出されます。これは私が望むものではありません。配列のメンバーのプロパティが変更されたときにのみ関数を実行したい。メンバーでない場合、関数は実行されません。

を使用しdidSet、いずれにせよ関数を実行し、関数の先頭でメンバーシップをチェックすることは考えられるかもしれませんが、これは良い方法ではないと感じています。

Swiftでこれを適切に達成するにはどうすればよいですか?

編集: Swift で Key-Value Observing を使用するための Apple のガイド

4

1 に答える 1