【问题标题】:removeAtIndex with didSetremoveAtIndex 与 didSet
【发布时间】:2015-07-12 10:39:23
【问题描述】:

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

【问题讨论】:

    标签: ios arrays swift properties


    【解决方案1】:

    非常出乎意料。

    就我而言,我能够维护一个我推进的索引变量,而不是从数组中拉出项目。

    【讨论】:

      【解决方案2】:

      didSet 方法会被自动调用,如果你不想执行 didSet 方法中的那几行代码,下面的技巧可能对你有用。

      1. Bool变量,并在willSet观察者方法中使其为真,在didSet方法中检查此布尔变量的状态,如果为真则忽略,并立即使其为假。

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

      【讨论】:

      • 不是我希望的答案,但谢谢。知道为什么调用 removeAtIndex 会导致调用 didSet 吗?我认为didSet 只会在我重新分配属性时被调用,例如self.items = ...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 2019-05-22
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      相关资源
      最近更新 更多