removeAtIndex 与 didSet
removeAtIndex with didSet
我们有一个 class 数组 属性 有一个 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
}
didSet方法会被自动调用,如果你不想执行didSet方法中的代码行,下面的技巧可能对你有用。
取 Bool
变量,在 willSet 观察者方法中将其设置为真,在 didSet 方法中检查此 bool 变量的状态,如果为真则忽略,并立即将其设置为假。
在 didSet 观察者方法中,您将获取数组的旧值并找到计数,并与当前计数进行比较。
非常出乎意料。
就我而言,我能够维护一个我推进的索引变量,而不是将项目从数组中拉出。
我们有一个 class 数组 属性 有一个 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
}
didSet方法会被自动调用,如果你不想执行didSet方法中的代码行,下面的技巧可能对你有用。
取
Bool
变量,在 willSet 观察者方法中将其设置为真,在 didSet 方法中检查此 bool 变量的状态,如果为真则忽略,并立即将其设置为假。在 didSet 观察者方法中,您将获取数组的旧值并找到计数,并与当前计数进行比较。
非常出乎意料。
就我而言,我能够维护一个我推进的索引变量,而不是将项目从数组中拉出。