КВО Глобальная сфера

Я изучаю MVVM, поэтому я добавил наблюдателя на имущество

 init(model: RegisterUserModel = RegisterUserModel()) {
    self.registerModel = model

    let confirmPasswordObserver = self.registerModel.observe(\RegisterUserModel.confirmPassword) {[unowned self] (model, value) in
        print("Confrim Password Observeer called with value :\(self.registerModel.confirmPassword)")
    }
   // self.registerModel.confirmPassword = "CALLED WITH THIS LINE INSIDE INIT FUNC ONLY" 


}

Наблюдатель должен быть вызван при изменении значения текстового поля из контроллера представления, поэтому я установил registerModel.confirmPassword = str из метода updateField

Но print заявление не было выполнено

но если я изменю значение с init метод тогда наблюдатель работает!!

Как сделать это глобальным?

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Как я меняю собственность

extension RegisterViewModel {

    func updateField (field:RegisterFields, withString str:String) {
        switch field {
        case .firstName:
            registerModel.firstName = str

        case .lastName:
            registerModel.lastName = str

        case .email:
            registerModel.email = str

        case .phone:
            registerModel.phone = str

        case .city:
            registerModel.city = str

        case .password:
            registerModel.password = str
            confirmPassword.value = confirmPassword.value

        case .confirmPassword:
            registerModel.confirmPassword = str //SHOULD BE CALLED FROM HERE
        }
    }
}

1 ответ

Решение

О, Боже!!

Я добавил глобальный объект для

private var confirmPasswordObserver : NSKeyValueObservation?

и использовать этот объект.

  confirmPasswordObserver = self.registerModel.observe(\RegisterUserModel.confirmPassword) {[unowned self] (model, value) in
            print("Confrim Password Observeer called with value :\(self.registerModel.confirmPassword)")
        }

И это работает сейчас. Но мне интересно, может ли кто-нибудь объяснить это мне. несмотря на то, что verifyPasswordObserver не используется, но все еще нуждается в глобальной области видимости

Надеюсь, что кто-то может получить помощь от этого, поэтому я решил не удалять это

Другие вопросы по тегам