Combinable
I've really enjoyed using Apple's Combine framework to build iOS apps with UIKit in a reactive way. Both Threads and Courier's iOS app are built with Combine. While building those apps, I found some useful patterns that I thought made sense to extract into their own package, so I could reuse them across different apps.
A non-comprehensive list of things included in Combinable:
- Data source implementations for table views and collection views that source data from a Combine publisher
- A variation of
sink
calledhandle
, which keeps the subscription alive until the publisher completes (useful for things like futures) - A
withLatestFrom
operator, useful for combining values from two publishers in an asymmetric way - A publisher of changes to a Core Data fetch request's results, as described in my post Observing Core Data Changes with a Custom Combine Publisher