Protocol-oriented, type-safe data source objects that keep your view controllers light
A Swift library of data source and delegate objects inspired by Andy Matuschak's type-safe, value-oriented collection view data source gist.
This library reduces the boilerplate code regarding the UITableView
, UICollectionView
, and NSFetchedResultsController
data source objects, as well as the NSFetchedResultsControllerDelegate
object. It helps keep view controllers light, while focusing on type-safety, SOLID design principles, and easy interoperability with Cocoa. Further, it brings a more focused and data-driven perspective to these data sources. If you want to change your view then you change your data and its structure, without needing to update any data source or delegate protocol methods.
- Xcode 11+
- Swift 5.1+
- iOS 11.0+
- tvOS 11.0+
- SwiftLint
CocoaPods (recommended)
use_frameworks!
# For latest release in cocoapods
pod 'JSQDataSourcesKit'
# Feeling adventurous? Get the latest on develop
pod 'JSQDataSourcesKit', :git => 'https://github.com/jessesquires/JSQDataSourcesKit.git', :branch => 'develop'
github "jessesquires/JSQDataSourcesKit"
Read the docs. Generated with jazzy. Hosted by GitHub Pages.
$ ./scripts/build_docs.sh
$ open index.html -a Safari
Interested in making contributions to this project? Please review the guides below.
Also, consider sponsoring this project or buying my apps! ✌️
Created and maintained by @jesse_squires
- Inspired by andymatuschak / gist f1e1691fa1a327468f8e
- Inspired by ashfurrow / UICollectionView-NSFetchedResultsController
JSQDataSourcesKit
is released under an MIT License. See LICENSE
for details.
Copyright © 2015-present Jesse Squires.
Please provide attribution, it is greatly appreciated.