2014-06-09 74 views
1

我收到此错误:无法将表达式的类型'()'转换为键入$'T5' Card从CardCard继承,并且我知道drawRandomCard返回了一个PlayingCard。 如何进行此转换?Swift - 继承自该类的Cast对象

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) 
    } 
} 

} 

上git的全码:https://github.com/victoryudi/CS193p-Swift/tree/master/FlipCard

回答

5

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

如果要投射,请使用deck.drawRandomCard() as PlayingCard

+0

不能相信我错过了。谢谢! – vyudi