GithubHelp home page GithubHelp logo

isabella232 / rxviewmodel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sumi-interactive/rxviewmodel

0.0 0.0 0.0 1.16 MB

ReactiveViewModel-esque using RxSwift

License: MIT License

Objective-C 5.51% Swift 94.49%

rxviewmodel's Introduction

RxViewModel

codecov.io Build Status Carthage compatible Version License Platform

Model-View-ViewModel

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.

Usage

To run the example project, clone the repo, and run pod install from the Example directory first.

Installation

CocoaPods

Simply add the following line to your Podfile:

pod "RxViewModel"

And then run:

pod install

Carthage

Just add the following to your Cartfile

github "RxSwiftCommunity/RxViewModel"

And run:

carthage update

Features

Currently RxViewModel supports the following features from ReactiveViewModel (*ALL of them 😉):

  • didBecomeActive
  • didBecomeInactive
  • forwardSignalWhileActive
  • throttleSignalWhileInactive

Author

Esteban Torres

License

RxViewModel is available under the MIT license. See the LICENSE file for more info.

rxviewmodel's People

Contributors

ashfurrow avatar ayastrebov avatar bobspryn avatar calvingit avatar esttorhe avatar freak4pc avatar grangej avatar kyoji2 avatar leoneparise avatar pixel16 avatar pixeldock avatar readmecritic avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.