我们有一个带有数组属性的类,它有一个didSet
观察者。但是,当我们在此数组上调用removeAtIndex
时,似乎会调用didSet
观察者。有什么方法可以阻止这种情况发生吗?
var items: [String] = []
{
didSet
{
println(self.items.count)
}
}
...
func removeIndex(index: Int)
{
self.items.removeAtIndex(index)
// now didSet is called, but we don't want that
}
答案 0 :(得分:1)
将自动调用didSet方法,如果您不想在didSet方法中执行代码行,则以下技巧可能适合您。
取Bool
变量,并在willSet观察者方法中将其设为true,在didSet方法中检查此bool变量的状态,如果为true,则立即将其设为false。
在didSet观察者方法中,您将获得数组的oldValue并查找计数,并与当前计数进行比较。
答案 1 :(得分:0)
非常意外。
对于我的情况,我能够维护一个我前进的索引变量,而不是将项目拉出数组。