removeSet指定removeAtIndex

时间:2015-05-02 19:22:17

标签: ios arrays swift properties

我们有一个带有数组属性的类,它有一个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
}

2 个答案:

答案 0 :(得分:1)

将自动调用didSet方法,如果您不想在didSet方法中执行代码行,则以下技巧可能适合您。

  1. Bool变量,并在willSet观察者方法中将其设为true,在didSet方法中检查此bool变量的状态,如果为true,则立即将其设为false。

  2. 在didSet观察者方法中,您将获得数组的oldValue并查找计数,并与当前计数进行比较。

答案 1 :(得分:0)

非常意外。

对于我的情况,我能够维护一个我前进的索引变量,而不是将项目拉出数组。