Вы можете делегировать из init? инициализировать! и наоборот, и вы можете переопределить init? внутри! и наоборот.
Это означает, что вы можете конвертировать некоторые init?
в init!
, если вы уверены, что это не сработает или наоборот. В документации есть пример:
enum TemperatureUnit {
case Kelvin, Celsius, Fahrenheit
init?(symbol: Character) {
switch symbol {
case "K":
self = .Kelvin
case "C":
self = .Celsius
case "F":
self = .Fahrenheit
default:
return nil
}
}
}
У вас может быть похожий код, и вы можете инициализировать его только с помощью констант, не используя пользовательский ввод, или некоторые другие источники ввода. Поэтому вы уверены, что это не подведет, почему бы не сделать это init!
?