Swfit как инициализировать переменную с помощью promise?

#swift

#swift

Вопрос:

У меня есть ViewModel, который получает профиль пользователя через вызов API. Я хочу установить переменную в ViewModel, чтобы я мог использовать переменную в другом месте. Код выглядит следующим образом:

 class UserProfileViewModel {

   let userId: String

   private let getUserProfile: GetUserProfile

   init(getUserProfile = GetUserProfile()) {
       self.getUserProfile = getUserProfile
       updateData()
    }

func updateData() {
    getUserProfile.start().done {
        [weak self] userProfile in
        guard let userProfile = userProfile else { return }
        // Should assign the userProfile.id to self.memberId
    }
}
  

он возвращает мне эту ошибку Return from initializer without initializing all stored properties

Мне нужно инициализировать общедоступную переменную в init, но фактические данные получены из вызова API, есть ли какой-либо способ добиться этого?

Ответ №1:

Сделайте ее необязательной (и обновите весь зависимый код), например

 class UserProfileViewModel {

   var userId: String?
...