这是变量还是函数?或两者?

时间:2016-11-22 23:58:50

标签: ios swift

我关注this教程,初学者项目包含一个带有此代码的UITableViewCell类:

var product: SKProduct? {
  didSet {
    guard let product = product else { return }

    textLabel?.text = product.localizedTitle

    if RageProducts.store.isProductPurchased(product.productIdentifier) {
      accessoryType = .checkmark
      accessoryView = nil
      detailTextLabel?.text = ""
    } else {
      ProductCell.priceFormatter.locale = product.priceLocale
      detailTextLabel?.text = ProductCell.priceFormatter.string(from: product.price)

      accessoryType = .none
      accessoryView = newBuyButton()
    }
  }
}

这看起来像没有参数的函数。我之前从未见过带有外壳的变量。第一行是var语句但是启动了一个封装:

var product: SKProduct? {

任何人都能解释一下吗?

1 个答案:

答案 0 :(得分:3)

在此示例中,product是变量,didSet是一个函数。更具体地说,didsetproperty observer。来自Apple的文档:

  

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

因此,didSet内的代码将在您进行变量赋值时执行,例如:

product = someSKProduct