class ArcaneCardVC: UIViewController {
    var currentCard: ArcaneCardView?
}

class PostVC: ArcaneCardVC {
    override var currentCard: PostCard?
// <===== This is what I want to do but cant
}

class ArcaneCardView: UIView {

}
class PostCard: ArcaneCardView {

}

这是我得到的错误:

无法覆盖“ArcaneCardView”类型的可变属性“currentCard”?具有协变类型“PostCard?”

另一种解决方案是每次我使用currentCard时都在代码中明确地执行此操作:
var card = currentCard as! PostCard

最佳答案

正确的方法是使用currentCard as! PostCard的方法。

另一种选择是使用属性获取器

// inside PostVC

// Note the camel case on the 'C' makes it a different variable that the super class
var CurrentCard: PostCard {
    get { return self.currentCard as! PostCard }
}

然后,您将使用self.CurrentCard而不是self.currentCard as! PostCard

10-08 05:55