【问题标题】:How can I check array count changes in Swift [closed]如何检查 Swift 中的数组计数变化 [关闭]
【发布时间】:2020-01-21 12:22:34
【问题描述】:

我想在数组计数改变时调用一些函数。我可以使用 willSet 执行此操作吗,或者如何检查它

【问题讨论】:

  • 这里明显的问题是,您是否尝试查看它是否适用于willSet

标签: arrays swift


【解决方案1】:

属性观察者观察并响应属性的变化 价值。每次属性值被调用时,都会调用属性观察者 设置,即使新值与属性的当前值相同 价值。

您可以选择定义这些观察者中的一个或两个 属性:

  • willSet 在值被存储之前被调用。
  • 在存储新值后立即调用didSet。 source
var arr = [1,2] {
    willSet {
        let newCount = newValue.count
        callMe(count: newCount)
    }
    didSet {
        let newCount = arr.count
        callMe(count: newCount)
    }
}

func callMe(count: Int) {
    print(count)
}

【讨论】:

    【解决方案2】:

    检查newValuecountwillSet中的当前arr,即

    var arr = [1, 2] {
        willSet {
            if newValue.count != arr.count {
                print("Count changed...")
            }
        }
    }
    

    示例:

    arr.append(3) //Count changed...
    arr[0] = 4
    arr.remove(at: 0) //Count changed...
    

    【讨论】:

      【解决方案3】:
      var testArray : [Int] = [] {
          willSet{
              self.getCountBeforeAdd(index: testArray.count)
          }
          didSet {
              self.getCountAfterAdd(index: testArray.count)
          }
      }
      
      func getCountBeforeAdd(index:Int) {
          print("countBeforeAdd : \(index)")
      }
      
      func getCountAfterAdd(index:Int) {
          print("countAfterAdd : \(index)")
      }
      
      @IBAction func btnAddNew(_ sender: Any) {
          self.testArray.append(5)
      }
      

      【讨论】:

        猜你喜欢
        • 2020-12-09
        • 1970-01-01
        • 1970-01-01
        • 2013-07-30
        • 2021-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-27
        相关资源
        最近更新 更多