Привязка модели и viewModel в Swift Bond
Я использую Swift Bond для двусторонней привязки вида с viewModel. Это достигается за счет двунаправленной обратной связи.
Вопрос в том,: Какова распространенная практика привязки модели к viewModel и, более конкретно, как модель узнает об изменениях, внесенных в viewModel. В ReactiveCocoa есть RACChannel, чтобы сделать это, так что вы можете связать viewModel и model без изменения типов свойств модели.
Основная цель состоит в том, чтобы сохранить модель очень простой только с примитивными типами, такими как String, Int, дата и перемещение типов Observable и Property в viewModel.
Иллюстрация:
import Bond
import ReactiveKit
struct Person {
    var name: String
    var age: Int
    var birthdate: Date
}
struct PersonViewModel {
    fileprivate var person: Person
    var name: Observable<String>
    var age: Observable<Int>
    var birthDate: Observable<Date>
    init(person: Person) {
        self.person = person
        // what should go here in order to bind properties???
    }
}
1 ответ:
Для того, чтобы двунаправленно связать ваши
Вы можете либо изменить свойViewModelиModelвместе, вам нужно будет иметь связываемые свойства внутри вашегоPersonModelчего, похоже, ты хочешь избежать. Это не возможно, чтобы привязать к себе чистый Инт, строки или даты.Model, чтобы использовать связываемые свойства, либо создать решение, в котором вашModelвзаимодействует с вашимViewModelчерез некоторый тип наблюдаемой абстракции.
biDirectionalBindобычно используется для связывания свойств в ваш слойViewModelсо слоем View для передачи обновлений из взаимодействий пользователя обратно вViewModel, например:let name = Property<String>("Fred") let textField = UITextField() name.bidirectionalBind(to: textField.bnd_text)