class ViewModel {
enum Input {
case changeInt(int: Int)
}
struct Output {
let intPublisher: AnyPublisher<Int, Never>
}
private let intSubject = CurrentValueSubject<Int, Never>(1)
let output: Output
init() {
output = .init(intPublisher: intSubject.eraseToAnyPublisher())
}
func action(input: Input) {
switch input {
case .changeInt(let int):
intSubject.send(int)
}
}
}
//
// ViewController.swift
// IOTest
//
// Created by 이동현 on 11/14/24.
//
import Combine
import UIKit
class ViewController: UIViewController {
let viewModel = ViewModel()
var cancellables = Set<AnyCancellable>()
override func viewDidLoad() {
super.viewDidLoad()
bind()
}
private func bind() {
viewModel.output.intPublisher
.receive(on: DispatchQueue.main)
.sink { int in
print(int)
}
.store(in: &cancellables)
}
@IBAction func button(_ sender: Any) {
viewModel.action(input: .changeInt(int: 10))
}
}