Во-первых, дружеский совет прекратить этот беспорядок с замыканиями. Используйте псевдонимы типов, чтобы избежать сложности в объявлениях функций.
typealias UserCompletion = (User?) -> Void
Теперь в вашей функции:
func prof(completion: UserCompletion?) {
...
completion?(user)
}
View Controller:
api.prof { user in
if let user = user {
//do something with user
}
}
Во-вторых, почему выхотите, чтобы ваше завершение было с необязательным пользователем? В идеале вы хотели бы пойти на ошибку, если создание пользователя не удается. Вы можете использовать Result<User, Error>
для этого.