Giter Site home page Giter Site logo

rxswift's Introduction

Miss Electric Eel 2016 RxSwift: ReactiveX for Swift

Travis CI platforms pod Carthage compatible

Xcode 7.3 Swift 2.2 required

About Rx

Rx is a generic abstraction of computation expressed through Observable<Element> interface.

This is a Swift version of Rx.

It tries to port as many concepts from the original version as possible, but some concepts were adapted for more pleasant and performant integration with iOS/OSX environment.

Cross platform documentation can be found on ReactiveX.io.

Like the original Rx, its intention is to enable easy composition of asynchronous operations and event/data streams.

KVO observing, async operations and streams are all unified under abstraction of sequence. This is the reason why Rx is so simple, elegant and powerful.

I came here because I want to ...

... understand
... install
... hack around
... interact
... compare
... find compatible
... see the broader vision
  • Does this exist for Android? RxJava
  • Where is all of this going, what is the future, what about reactive architectures, how do you design entire apps this way? Cycle.js - this is javascript, but RxJS is javascript version of Rx.

Usage

Here's an example In Action
Define search for GitHub repositories ...
let searchResults = searchBar.rx_text
    .throttle(0.3, scheduler: MainScheduler.instance)
    .distinctUntilChanged()
    .flatMapLatest { query -> Observable<[Repository]> in
        if query.isEmpty {
            return Observable.just([])
        }
    return searchGitHub(query)
        .catchErrorJustReturn([])
}
.observeOn(MainScheduler.instance)</pre></div></td>
... then bind the results to your tableview
searchResults
    .bindTo(tableView.rx_itemsWithCellIdentifier("Cell")) {
        (index, repository: Repository, cell) in
        cell.textLabel?.text = repository.name
        cell.detailTextLabel?.text = repository.url
    }
    .addDisposableTo(disposeBag)

Installation

Rx doesn't contain any external dependencies.

These are currently supported options:

Manual

Open Rx.xcworkspace, choose RxExample and hit run. This method will build everything and run sample app

⚠️ IMPORTANT! For tvOS support CocoaPods 0.39 is required. ⚠️

# Podfile
use_frameworks!

target 'YOUR_TARGET_NAME' do
    pod 'RxSwift',    '~> 2.0'
    pod 'RxCocoa',    '~> 2.0'
end

# RxTests and RxBlocking have most sense in the context of unit/integration tests
target 'YOUR_TESTING_TARGET' do
    pod 'RxBlocking', '~> 2.0'
    pod 'RxTests',    '~> 2.0'
end

replace YOUR_TARGET_NAME, then type in the Podfile directory:

$ pod install

Xcode 7.1 required

Add this to Cartfile

github "ReactiveX/RxSwift" ~> 2.0
$ carthage update

Manually using git submodules

  • Add RxSwift as a submodule
$ git submodule add [email protected]:ReactiveX/RxSwift.git
  • Drag Rx.xcodeproj into Project Navigator
  • Go to Project > Targets > Build Phases > Link Binary With Libraries, click + and select RxSwift-[Platform] and RxCocoa-[Platform] targets

References

rxswift's People

Contributors

kzaher avatar yury avatar bontojr avatar carlosypunto avatar yoshinorisano avatar stack avatar thanegill avatar vodovozovge avatar nanoxd avatar orta avatar sergdort avatar ikesyo avatar fpillet avatar hsoi avatar ishkawa avatar leonerd42 avatar 53ningen avatar tarunon avatar lfaoro avatar delebedev avatar ashfurrow avatar calvin-huang avatar ejensen avatar koke avatar samgreen avatar shuoli84 avatar zhigang1992 avatar sendyhalim avatar fastred avatar tokorom avatar

Watchers

James Cloos avatar 三刀流 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.