我有一个存储类对象的数组:
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”数组的任何成员的任何属性发生变化时,我想运行一个函数。在调用这个函数时,我需要将属性改变的数组的项作为参数传递。
我想使用didSet
on color 属性,但在这种情况下,当 otherApple 的属性也发生更改时会调用函数。这不是我想要的。我只想在数组成员的属性发生更改时运行该函数。如果它不是成员,则该函数不应运行。
使用didSet
,在任何情况下运行该函数,并在函数开头检查成员资格可能是一个想法,但我觉得这不是一个好方法。
如何使用 Swift 正确实现这一点?
编辑:Apple 的在 Swift 中使用键值观察的指南