Skip to content

Instantly share code, notes, and snippets.

@thepearl
Created December 9, 2022 22:28
Show Gist options
  • Save thepearl/c16374fd609c5487c8b46b2ddb763cc7 to your computer and use it in GitHub Desktop.
Save thepearl/c16374fd609c5487c8b46b2ddb763cc7 to your computer and use it in GitHub Desktop.
import Foundation
import SwiftUI
import Combine
protocol Networking {
func fetch() -> String?
}
class NetworkManager: Networking {
// Some code for making network requests
func fetch() -> String? {
return ""
}
}
class UserViewModel: ObservableObject {
let networkManager: NetworkManager
@Published public var user: String?
init(networkManager: NetworkManager) {
self.networkManager = networkManager
fetchUsers()
}
func fetchUsers() {
// Use the network manager to make a network request to fetch a list of users
user = networkManager.fetch()
}
}
struct UserView: View {
@ObservedObject var viewModel: UserViewModel
var body: some View {
// Display a users using the view model
Text(viewModel.user ?? "")
}
}
let networkManager = NetworkManager()
let userViewModel = UserViewModel(networkManager: networkManager)
let userView = UserView(viewModel: userViewModel)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment