/ / Свързване на модел и изгледМодел в Swift Bond - swift, mvvm, реактивно програмиране, реактивно-какао, реактивен

Свързване на модела и вида на модела в Swift Bond - бързо, mvvm, реактивно програмиране, реактивно какао, reactivekit

Използвам Swift Bond за двупосочно свързване на изглед с viewModel. Това се постига чрез двупосочна връзка.

Въпросът е: Каква е обичайната практика на свързване на модел с viewModel и по-конкретно как би моделът да знае за промените, направени в viewModel. В ReactiveCocoa има RACChannel, за да направите това, така че можете да обвържете viewModel и model, без да променяте свойствата на модела.

Основната цел е да се запази моделът много прост само с примитивни типове като String, Int, Date и да се движат Observable и Property типове, за да видитеModel.

Илюстрация:

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???
}
}

Отговори:

2 за отговор № 1

За да свържете двупосочно ViewModel и Model заедно ще трябва да притежавате обвързващи свойства вътре във вашата Person Model което звучи като искате да избегнете. Не е възможно да се свържете с чист тип Int, String или Date.

Можеш или да модифицираш Model да използвате bindable свойства, или бихте могли да създадете решение, в което Model взаимодейства с вашия ViewModel чрез някакъв вид наблюдавана абстракция.

biDirectionalBind обикновено се използва за свързване на свойствата във вашия ViewModel слой с View Layer, за да предадете актуализациите от взаимодействията на потребителя обратно към ViewModel, например:

let name = Property<String>("Fred")
let textField = UITextField()
name.bidirectionalBind(to: textField.bnd_text)