VmRx.swift 1.0.0

VmRx.swift 1.0.0

Vinícius soares 维护。



  • Vinícius Soares

VmRx.swift: 在 iOS 上使用 MVVM 的简单方法

VmRx 是一个受启于 Airbnb MvRx for Android 的 iOS 框架。

它看起来是这样的

// State
struct TodoListState: State {
  var todos: Async<[Todo]> = .uninitialized
}

// ViewModel
class TodoListViewModel: ViewModel<TodoListState> {
  private let api: Api

  init(api: Api) {
    self.api = api
    super.init(initialState: TodoListState())
  }

  func refreshTodos() {
    api
      .fetchTodos()
      .execute(with: self) { (state, result) in
        state.copy(withChanges: { $0.todos = result })
      }
  }
}

// Controller
class TodoListController: UIViewController {
  var viewModel: ViewModel<TodoListState> = TodoListViewModel(api: Api.shared)

  override func viewDidLoad() {
    super.viewDidLoad()

    viewModel.subscribe { [weak self] in self?.useState($0) }

    viewModel.refreshTodos()
  }

  func useState(_ state: TodoListState) {
    print(state)
  }
}

安装

// TODO