ReactiveCoreData alternatives and similar libraries
Based on the "Reactive Programming" category.
Alternatively, view ReactiveCoreData alternatives based on common mentions on social networks and blogs.
-
ReactiveCocoa
Cocoa framework and Obj-C dynamism bindings for ReactiveSwift. -
ReSwift
Unidirectional Data Flow in Swift - Inspired by Redux -
OpenCombine
Open source implementation of Apple's Combine framework for processing values over time. -
Render
UIKit a-lร SwiftUI.framework [min deployment target iOS10] -
RxCoordinator
๐ Powerful navigation library for iOS based on the coordinator pattern -
Katana
Swift Apps in a Swoosh! A modern framework for creating iOS apps, inspired by Redux. -
RxAlamofire
RxSwift wrapper around the elegant HTTP networking in Swift Alamofire -
RxBluetoothKit
iOS & OSX Bluetooth library for RxSwift -
Interstellar
Simple and lightweight Functional Reactive Coding in Swift for the rest of us. :large_orange_diamond: -
RxAutomaton
๐ค RxSwift + State Machine, inspired by Redux and Elm. -
NSObject-Rx
Handy RxSwift extensions on NSObject, including rx.disposeBag. -
Verge
๐ฃ A robust Swift state-management framework designed for complex applications, featuring an integrated ORM for efficient data handling. -
RxMediaPicker
A reactive wrapper built around UIImagePickerController. -
VueFlux
:recycle: Unidirectional State Management Architecture for Swift - Inspired by Vuex and Flux -
Komponents ๐ฆ
๐ฆ React-inspired UIKit Components - โ ๏ธ Deprecated -
ReactiveTask
Flexible, stream-based abstraction for launching processes -
TemplateKit
React-inspired framework for building component-based user interfaces in Swift. -
RxReduce
Lightweight framework that ease the implementation of a state container pattern in a Reactive Programming compliant way. -
LightweightObservable
๐ฌ A lightweight implementation of an observable sequence that you can subscribe to. -
RxMultipeer
A testable RxSwift wrapper around MultipeerConnectivity -
Aftermath
:crystal_ball: Stateless message-driven micro-framework in Swift. -
ReactiveArray
An array class implemented in Swift that can be observed using ReactiveCocoa's Signals -
SimpleApiClient
A configurable api client based on Alamofire4 and RxSwift4 for iOS. -
OneWay
A Swift library for state management with unidirectional data flow. -
ACKReactiveExtensions
Set of useful extensions for ReactiveSwift & ReactiveCocoa -
ReactiveLocation
ReactiveCocoa wrapper for CLLocationManager. -
STDevRxExt
STDevRxExt contains some extension functions for RxSwift and RxCocoa which makes our live easy. -
BindKit
Two-way data binding framework for iOS. Only one API to learn. -
RxOptional
RxSwift extentions for Swift optionals and "Occupiable" types -
RxAlamoRecord
RxAlamoRecord combines the power of the AlamoRecord and RxSwift libraries to create a networking layer that makes interacting with API's easier than ever reactively.
Appwrite - The open-source backend cloud platform
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of ReactiveCoreData or a related project?
README
ReactiveCoreData
ReactiveCoreData (RCD) is an attempt to bring Core Data into the ReactiveCocoa (RAC) world.
Currently has several files with the source code, Specta specs and a [demo application][Demo] for the Mac.
To use, copy the source files from [ReactiveCoreData](ReactiveCoreData) folder to your project. You should also have ReactiveCocoa in your project, of course.
Code from the Mac example:
// This part refetches data for the table and puts it into filteredParents
// It either fetches all Parents or filters by name, if there's something in the search field
// It will also refetch, if objectsChanged send a next
RAC(self.filteredParents) = [[[[Parent findAll]
where:@"name" contains:filterText options:@"cd"]
sortBy:@"name"]
fetchWithTrigger:objectsChanged];
Another example of background processing:
[[[[triggerSignal
performInBackgroundContext:^(NSManagedObjectContext *context) {
[Parent insert];
}]
saveContext]
deliverOn:RACScheduler.mainThreadScheduler]
subscribeNext:^(id _) {
// Update UI
}];
// We can also react to main context's merge notifications to update the UI
[mainContext.rcd_merged
subscribeNext:^(NSNotification *note){
// Update UI
}];
See the test [Specs][Specs] for some crude usage examples.
Also checkout the demo application in the project. It shows a simple table-view with Core Data backed storage using ReactiveCoreData and ReactiveCocoa for connecting things.
The headers also provide documentation for the various methods.
It's not feature-complete and more could be done but will be added based on actual usage and your contributions.
That being said, it should work both with shoebox and document-based applications, where there are many object contexts.
Done:
- Start signals that represent and modify NSFetchRequests (findAll, findOne) from NSManagedObject.
-[RACSignal where:args:]
method that sets a predicate with given format that can have signals as its arguments. This brings execution of NSFetchRequests into the Reactive domain. As any signal to predicate changes, the query is modified and sent next โ to be fetched, for example.- A couple of signal-aware convenience methods for common predicate cases, like for CONTAINS predicate and for equal
[RACSignal limit:]
that accepts either a value or a signal.[RACSignal sortBy:]
that accepts either a "key" string, or a "-key" (for descending sort), or a sort descriptor, or an array of sort descriptors, or a signal with any of thesefetch
andcount
methods on RACSignal to execute the NSFetchRequest that's passed to them in the current NSManagedObjectContext and send the resulting array (or count) as "next".fetchWithTrigger:
which will rerun the fetch if the trigger fires any value.- fetching objectID and converting objectIDs to objects in current context
- Running in background contexts
- Saving of non-main contexts merges them into the main context.
- Signal that's fired when a context is saved (wraps NSManagedObjectContextDidSaveNotification).
- Signal that's fired after a merge.
- Support not only for shoebox applications (with one main managed object context) but also document-based applications where you have a separate context for each document.