КВО Глобальная сфера
Я изучаю 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 не используется, но все еще нуждается в глобальной области видимости
Надеюсь, что кто-то может получить помощь от этого, поэтому я решил не удалять это