我关注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? {
任何人都能解释一下吗?
答案 0 :(得分:3)
在此示例中,product
是变量,didSet
是一个函数。更具体地说,didset
是property observer。来自Apple的文档:
物业观察员观察并回应物业价值的变化。每次设置属性值时都会调用属性观察者,即使新值与属性的当前值相同。
因此,didSet
内的代码将在您进行变量赋值时执行,例如:
product = someSKProduct