Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Rxdatasources | 2,932 | 449 | 8 months ago | 33 | January 02, 2021 | 76 | mit | Swift | ||
UITableView and UICollectionView Data Sources for RxSwift (sections, animated updates, editing ...) | ||||||||||
Rxrealm | 1,101 | 128 | 9 months ago | 34 | January 19, 2022 | 7 | mit | Swift | ||
RxSwift extension for RealmSwift's types | ||||||||||
Iossampleapp | 666 | 2 months ago | mit | Swift | ||||||
Sample iOS app demonstrating Coordinators, Dependency Injection, MVVM, Binding | ||||||||||
Moya Objectmapper | 446 | 94 | 3 years ago | 28 | January 26, 2020 | 11 | mit | Swift | ||
ObjectMapper bindings for Moya and RxSwift | ||||||||||
Rxviewmodel | 370 | 9 | 3 years ago | 24 | October 31, 2017 | 9 | mit | Swift | ||
ReactiveViewModel-esque using RxSwift | ||||||||||
Rxreachability | 273 | 8 | 9 months ago | 5 | October 22, 2018 | mit | Swift | |||
RxSwift bindings for Reachability | ||||||||||
Rxpermission | 234 | 2 | 6 years ago | 5 | June 26, 2018 | mit | Swift | |||
RxSwift bindings for Permissions API in iOS. | ||||||||||
Moya Modelmapper | 134 | 38 | 3 years ago | 27 | February 18, 2020 | 6 | mit | Swift | ||
ModelMapper bindings for Moya. | ||||||||||
Moya Swiftyjsonmapper | 110 | 10 | 8 months ago | 12 | September 28, 2022 | 2 | mit | Swift | ||
Map objects through SwiftyJSON in combination with Moya | ||||||||||
Swift Mvvmc Demo | 48 | 3 years ago | 1 | mit | Swift | |||||
Sample iOS application in Swift presenting usage of MVVM-C pattern |
Model-View-ViewModel
(MVVM from now on) was created by Microsoft and is defined as follows:
The Model-View-ViewModel (MVVM) pattern is an application pattern that isolates the user interface from the underlying business logic. MVVM belongs to a class of patterns called Separated Presentation. These patterns provide a clean separation between the UI and the rest of the application. This improves the testability of the application and allows the application and its UI to evolve more easily and independently.
The Model-View-ViewModel (MVVM) pattern helps you to cleanly separate the business and presentation logic of your application from its user interface (UI). Maintaining a clean separation between application logic and UI helps to address numerous development and design issues and can make your application much easier to test, maintain, and evolve. It can also greatly improve code re-use opportunities and allows developers and UI designers to more easily collaborate when developing their respective parts of the application.
It basically adds a new «separation layer» to break down the MVC
pattern into more manageable pieces.
MVC
on Cocoa hast always been a pain because it always translates to «Massive View Controller» due to the need to many delegates
that are usually implemented by one controller (e.g. when binding a tableview where you need a delegate for the tableview and also a delegate for the data source, etc).
MVVM
separates the View
from the Model
via an «intermediate» class named ViewModel
.
This intermediate class allows the binding of the View
and the Model
in a more clean and easy manner and also separates some logic as to how/when to load the data removing that responsability from the View
and leaving pretty much only the UI
specific code in it.
RxViewModel
RxViewModel
is the marriage between MVVM
and Rx
extensions
Long story short: a blatant «imitation» of ReactiveViewModel
using RxCocoa
.
Since ReactiveViewModel
project felt on stagnation and there's not Swift
or Swift 2.0
implementation we found the need to implement something like this on Swift
.
Given the fact that there's no Swift
branch and the lack of interest in the project we felt it was better to give RxSwift
/RxCocoa
a chance and instead use it as the base for this reactive view model approach.
To run the example project, clone the repo, and run pod install
from the Example directory first.
Simply add the following line to your Podfile:
pod "RxViewModel"
And then run:
pod install
Just add the following to your Cartfile
github "RxSwiftCommunity/RxViewModel"
And run:
carthage update
Currently RxViewModel
supports the following features from ReactiveViewModel
(*ALL of them 😉):
didBecomeActive
didBecomeInactive
forwardSignalWhileActive
throttleSignalWhileInactive
Esteban Torres
RxViewModel
is available under the MIT license. See the LICENSE file for more info.