Swift - 从该类继承的Cast对象

vyu*_*udi 1 inheritance casting swift

我收到此错误:无法将表达式的类型'()转换为从Card输入$'T5'PlayardCard继承,我知道drawRandomCard返回一个PlayingCard.我怎样才能进行这种转换?

var deck = PlayingCardDeck()
var card = PlayingCard()

class ViewController: UIViewController {



override func viewDidLoad() {
    super.viewDidLoad()

}

@IBAction func cardTouchBtn(sender : UIButton) {

    if !sender.currentTitle{sender.setTitle("", forState: UIControlState.Normal)}
    if  sender.currentTitle.isEmpty{
        card = PlayingCard(deck.drawRandomCard())
        sender.setBackgroundImage(UIImage(named : "cardFront"), forState: UIControlState.Normal)
        sender.setTitle(card.contents, forState: UIControlState.Normal)
    }else{
        sender.setBackgroundImage(UIImage(named : "cardBack"), forState: UIControlState.Normal)
        sender.setTitle("", forState: UIControlState.Normal)
    }
}

}
Run Code Online (Sandbox Code Playgroud)

关于git的完整代码:https://github.com/victoryudi/CS193p-Swift/tree/master/FlipCard

Sul*_*han 5

PlayingCard(...)不是演员.这是一个构造函数调用.

如果你想演员,请使用deck.drawRandomCard() as PlayingCard.