Эта функция не существует в Swift.
Вы не можете заставить подкласс переопределить метод.
Однако ... ?
Вы говорите, что это лучший код, который вы можете найти для достижения того, чего вы хотите, но вам не нравится, когда ошибка перемещается во время выполнения.
func f() -> Int {
fatalError("Should always be overriden")
}
Глядя на этот метод, кажется, что вы хотите заставить подкласс реализовать (не переопределить) метод.
Абстрактный класс
Возможно, вы ищете что-то похожее на концепцию абстрактного класса, доступную на других языках программирования.
Базовый класс + протокол
Если это то, что вы ищете, то вы можете достичь чего-то подобного в Swift.
class AnimalBase {
let name: String
init(name: String) {
self.name = name
}
}
protocol Animal: AnimalBase {
func move()
}
Теперь, если вы попытаетесь определить класс, подобный этому
class Dog: Animal {
}
, компилятор заставит вас наследовать от AnimalBase
class Dog: AnimalBase, Animal {
}
* 1029 И, наконец, предоставить реализацию для
move()
метода
class Dog: AnimalBase, Animal {
func move() {
print("?")
}
}