Skip to content

Instantly share code, notes, and snippets.

@lammertw
Created March 8, 2021 17:58
Show Gist options
  • Select an option

  • Save lammertw/7f05c9bfc4206652ed9757f2162f861c to your computer and use it in GitHub Desktop.

Select an option

Save lammertw/7f05c9bfc4206652ed9757f2162f861c to your computer and use it in GitHub Desktop.

Revisions

  1. lammertw created this gist Mar 8, 2021.
    36 changes: 36 additions & 0 deletions BlogSKMM1.RestaurantDetailView.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,36 @@
    import Combine
    import SwiftUI

    import shared

    class ObservableRestaurantDetailViewModel: ObservableObject {
    @Published var viewModelOutput: RestaurantDetailViewModelOutput?

    init(viewModel: RestaurantDetailViewModel) {
    asPublisher(viewModel.output)
    .compactMap { $0 }
    .receive(on: DispatchQueue.main)
    .assign(to: &$viewModelOutput)
    }
    }

    struct RestaurantDetailView: View {

    @ObservedObject var viewModelOutput: ObservableRestaurantDetailViewModel

    init(viewModel: RestaurantDetailViewModel) {
    viewModelOutput = ObservableRestaurantDetailViewModel(viewModel: viewModel)
    }

    var body: some View {
    if let output = viewModelOutput.viewModelOutput {
    VStack {
    Text(output.name)
    Text(output.priceCategory)
    // etc
    }
    } else {
    EmptyView()
    }
    }
    }