Failable-инициализаторы в Swift
В языке программирования Swift существует специальная разновидность инициализаторов -- Failable-инициализаторы. Они позволяют возвращать nil-значение, когда произошла какая-либо ошибка в процессе инициализации объекта. Давайте посмотрим, как это может выглядеть в коде:
Так как пользователь, который представлен классом User, не может иметь возраст менее нуля (это невозможно в принципе), то и ситуация по передаче числа меньше нуля по сути является ошибочной. И вот как раз здесь и следует применить failable-инициализатор.
Чтобы определить данный инициализатор, надо после слова init поставить знак вопроса, ну а в самом инициализаторе следует предусмотреть ситуацию, при которой будет возвращено nil-значение:
Когда мы возвращаем nil, мы таким образом указываем, что не можем создать объект User, основываясь на данных, переданных в инициализатор.
Также следует понимать, что объект, который создается этим инициализатором, станет представлять не тип User, а уже тип User?. Следовательно, для получения значения потребуется еще операция
Как вариант -- работать напрямую с объектом User?:
При этом важно учитывать, что в случае передачи неправильных данных инициализатор вернет nil, а получение значения закончится ошибкой. Чтобы этого не произошло, рекомендуется перед применением объекта выполнять проверку на наличие значения:
По материалам https://metanit.com/.