我很感激你的帮助-绞尽脑汁好几天了,我不明白为什么这不管用。
基本上,我有一个主视图控制器,它将由不同的类控制,这取决于用户选择的游戏
'经典'
'无限'
'定时'
当用户按钮被按下时,它需要浏览选项并将类的一个实例分配给一个变量“brain”。
这就是我所拥有的:

var brain = GuessMeComparer()

func switcher (random:String) {

switch random {

case "Classic": self.brain = ClassicBrain()
case "unlimited": self.brain = GuessMeComparer()
case "timed": self.brain = TimedBrain()

default:break

}
}

我得到错误“无法将类型为“ClassicBrain”的值分配给类型为“GuessMeComparer”的值。
我能想到的是你不能用switch分配实例变量?
任何帮助都很好,干杯!

最佳答案

使用anyobject可以工作,但正如vadian所说的,这将迫使您稍后强制转换到特定类型。更好的选择是为swift协议中的所有brain类抽象一个公共接口,例如:

protocol BrainProtocol {
   // common interface here
   ...
}

class /* or struct */ ClassicBrain : BrainProtocol {
    // classic implementation here
    ...
}

class /* or struct */ TimedBrain : BrainProtocol {
    // timed implementation here
    ...
}

...

var brain : BrainProtocol

10-06 07:06