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