У меня есть несколько классов, которые наследуются от SKNode. Оба имеют метод setup(). Они очень отличаются друг от друга.Смутно о протоколах
Я сделал протокол, как это:
protocol LevelProtocol {
func setup(level: Int)
}
и два из моих классов выглядеть примерно так: Фес
class Puzzle: SKNode, LevelProtocol {
func setup(level: Int) {do something}
class Action: SKNode, LevelProtocol {
func setup(level: Int) {do something}
И в моем главном классе мне нужно использовать один из этих классов в одной переменной. Как правильно определить эту переменную?
Я попытался это:
var lvl: LevelProtocol
if myLevel > 5 {
lvl = Puzzle()
else {
lvl = Action()
}
lvl.setup(myLevel)
self.addChild(lvl)
Но компилятор говорит, что LevelProtocol не конвертируется в SKNode Я знаю, что Я делаю что-то неправильно, просто не могу понять, что именно.
Не работает. Он работает, если я попробую 'self.addChild (lvl as Puzzle)', но это просто неправильно. – mres
См. Мой отредактированный ответ –
Да, это сработало, спасибо за понимание. Я, вероятно, оставлю этот вопрос открытым на пару дней, возможно, еще есть решение протокола. – mres