17pods
Diff algorithm for UITableView and UICollectionView. RxDataSources is powered by Differentiator.
License: MIT
Set of blocking operators for RxSwift. These operators are mostly intended for unit/integration tests with a couple of other special scenarios where they could be useful.
E.g.
Waiting for observable sequence to complete before exiting command line application.
License: NOASSERTION
This is an Rx extension that provides an easy and straight-forward way to use Apple iOS CoreMotion responses as Observables
License: MIT
This is a collection of reactive data sources for UITableView and UICollectionView.
It enables creation of animated data sources for table an collection views in just a couple of lines of code.
```swift let data: Observable = ...
let dataSource = RxTableViewSectionedAnimatedDataSource() dataSource.cellFactory = { (tv, ip, i) in let cell = tv.dequeueReusableCell(withIdentifier: "Cell") ?? UITableViewCell(style:.Default, reuseIdentifier: "Cell") cell.textLabel!.text = "(i)" return cell }
// animated data .bind(to: animatedTableView.rx.items(dataSource: dataSource)) .disposed(by: disposeBag)
// normal reload data .bind(to: tableView.rx.items(dataSource: dataSource)) .disposed(by: disposeBag) ```
License: MIT
Simplest architecture for RxSwift. State + feedback loops.
Debugging is easier
Can be applied on any level
system
operator)system
operator inside feedback loop)Works awesome with dependency injection
Testing
Can model circular dependencies
Completely separates business logic from effects (Rx).
License: MIT
Because the Observer Design pattern is something every developer should know. It facilitates the communication between objects and simplify the logic of your app. Implementing it in a Reactive way will take it to a whole new level.
License: NOASSERTION
A lightweight extension to subscribe Starscream websocket events with RxSwift.
License: Apache-2.0
This is a Swift port of ReactiveX.io
Like the original Rx, its intention is to enable easy composition of asynchronous operations and event streams.
It tries to port as many concepts from the original Rx as possible, but some concepts were adapted for more pleasant and performant integration with iOS/macOS/Linux environment.
Probably the best analogy for those who have never heard of Rx would be:
git diff | grep bug | less # linux pipes - programs communicate by sending
# sequences of bytes, words, lines, '
License: NOASSERTION
Unit testing extensions for RxSwift. This library contains mock schedulers, observables, and observers that should make unit testing your operators easy as unit testing RxSwift built-in operators.
This library contains everything you needed to write unit tests in the following way: ```swift func testMap() { let scheduler = TestScheduler(initialClock: 0)
let xs = scheduler.createHotObservable([
next(150, 1),
next(210, 0),
next(220, 1),
next(230, 2),
next(240, 4),
completed(300)
])
let res = scheduler.start { xs.map { $0 * 2 } }
let correctEvents = [
next(210, 0 * 2),
next(220, 1 * 2),
next(230, 2 * 2),
next(240, 4 * 2),
completed(300)
]
let correctSubscriptions = [
Subscription(200, 300)
]
XCTAssertEqual(res.events, correctEvents)
XCTAssertEqual(xs.subscriptions, correctSubscriptions)
} ```
License: NOASSERTION
Unit testing extensions for RxSwift. This library contains mock schedulers, observables, and observers that should make unit testing your operators easy as unit testing RxSwift built-in operators.
This library contains everything you needed to write unit tests in the following way: ```swift func testMap() { let scheduler = TestScheduler(initialClock: 0)
let xs = scheduler.createHotObservable([
next(150, 1),
next(210, 0),
next(220, 1),
next(230, 2),
next(240, 4),
completed(300)
])
let res = scheduler.start { xs.map { $0 * 2 } }
let correctEvents = [
next(210, 0 * 2),
next(220, 1 * 2),
next(230, 2 * 2),
next(240, 4 * 2),
completed(300)
]
let correctSubscriptions = [
Subscription(200, 300)
]
XCTAssertEqual(res.events, correctEvents)
XCTAssertEqual(xs.subscriptions, correctSubscriptions)
} ```
RxViewModel
is the marriage between MVVM
and Rx
extensions
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.
Long story short: a blatant «imitation» of ReactiveViewModel
using RxCocoa
.
License: MIT
SMWebView is a delightful, lightweight Swift wrapper around UIWebView that lets you harness the power of Closures and Chaining. And of course - Get rid of those pesky, awful delegates ;-)
License: MIT
UIView+Positioning provides shorthand methods and helpers to define the frame properties of any UIView based object in an easy fashion.
License: MIT