Смущен тем, как делиться (или если обмениваться) данными между моделями просмотраIOS

Программируем под IOS
Ответить
Anonymous
 Смущен тем, как делиться (или если обмениваться) данными между моделями просмотра

Сообщение Anonymous »

Представьте, что у меня есть две группы конечных точек:
Примеры конечных точек в группе 1:
  • /trip/ getall
  • /trip/create
Примеры конечных точек в группе 2:
  • /Startup/get
Для каждой группы конечных точек у меня есть отдельная модель представления.
< P> для/trip/*, у меня есть TripViewModel :

Код: Выделить всё

class TripViewModel: ObservableObject {
let tripService: TripServiceProtocol
private var cancellables = Set()

@Published var trips: [Trip] = []

init(tripService: TripServiceProtocol) {
self.tripService = tripService
}

func fetchAllTrips() {
tripService.getAllTrips()
.receive(on: RunLoop.main)
.sink(receiveCompletion: { data in
print("Received \(data)")
}, receiveValue: {[weak self] data in
// Get the trips and update the view model
self?.trips = data.data?.trips ?? []
}).store(in: &cancellables)
}

func createTrip() {
// call endpoint to create a trip
}

}
и для/стартап/*, у меня есть StartupViewModel :

Код: Выделить всё

class StartupViewModel: ObservableObject {
let startupService: StartupServiceProtocol
private var cancellables = Set()

@Published var trips: [Trip] = []

init(startupService: StartupServiceProtocol) {
self.startupService = startupService
}

func getStartup() {
startupService.getStartup()
.receive(on: RunLoop.main)
.sink(receiveCompletion: { data in
print("Received \(data)")
}, receiveValue: {[weak self] data in
// Get the trips and update the view model
self?.trips = data.data?.trips ?? []
}).store(in: &cancellables)
}

}
Как вы можете видеть, я получаю поездки в обеих моделях просмотра. () В StartupViewModel я хочу также обновить Trips в TripViewModel .
Как это можно сделать? И это даже должно быть сделано?

Подробнее здесь: https://stackoverflow.com/questions/794 ... iew-models
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»