Failable-инициализаторы в Swift

В языке программирования Swift существует специальная разновидность инициализаторов -- Failable-инициализаторы. Они позволяют возвращать nil-значение, когда произошла какая-либо ошибка в процессе инициализации объекта. Давайте посмотрим, как это может выглядеть в коде:

Так как пользователь, который представлен классом User, не может иметь возраст менее нуля (это невозможно в принципе), то и ситуация по передаче числа меньше нуля по сути является ошибочной. И вот как раз здесь и следует применить failable-инициализатор.

Чтобы определить данный инициализатор, надо после слова init поставить знак вопроса, ну а в самом инициализаторе следует предусмотреть ситуацию, при которой будет возвращено nil-значение:

Когда мы возвращаем nil, мы таким образом указываем, что не можем создать объект User, основываясь на данных, переданных в инициализатор.

Также следует понимать, что объект, который создается этим инициализатором, станет представлять не тип User, а уже тип User?. Следовательно, для получения значения потребуется еще операция ! (восклицательный знак):

Как вариант -- работать напрямую с объектом User?:

При этом важно учитывать, что в случае передачи неправильных данных инициализатор вернет nil, а получение значения закончится ошибкой. Чтобы этого не произошло, рекомендуется перед применением объекта выполнять проверку на наличие значения:

По материалам https://metanit.com/.