⚠️ Deprecated ⚠️
This library is now deprecated.
See announcement: https://www.jessesquires.com/blog/2020/04/14/deprecating-jsqdatasourceskit/
This release closes the 8.1.0 milestone.
This release closes the 8.0.0 milestone.
This release closes the 7.0.0 milestone.
Converted to Swift 4.0
iOS 9.0 minimum now required
tvOS 10.0 minimum now required
Significant renaming refactor: renamed all "factory" references to "config", see #73 for details and reasoning
ReusableViewFactoryProtocol
--> ReusableViewConfigProtocol
ViewFactory
--> ReusableViewConfig
TitledSupplementaryViewFactory
--> TitledSupplementaryViewConfig
cellFactory:
--> cellConfig:
supplementaryFactory:
--> supplementaryConfig:
Removed SectionInfoProtocol
in favor of using a concrete Section
. DataSource
now references Section
directly. (#103)
DataSourceProtocol
extension convenience method func item(atIndexPath indexPath: IndexPath) -> Item?
.TableEditingController
to support table view editing functionality provided by UITableViewDataSource
. (#29, #80, #100)This release closes the 6.0.0 milestone.
Swift 3.0 now required.
This release closes the 5.0.0 milestone.
Swift 2.3 now required.
This release closes the 4.0.1 milestone.
carthage build
(#61, #62). Thanks @dcaunt!This release closes the 4.0.0 milestone.
This release is essentially a complete re-write of the library. If you are currently using this, migration to 4.0
will be pretty involved, but it will be worth it. The result is a dramatically simpler API.
As always, see the updated documentation for details.
This release includes a complete revamp of the API (#48). It is now much cleaner, simpler, and easier to use. It has also been updated to be more Swifty according to the latest Swift API Guidelines.
This library was originally written before protocol extensions were introduced in Swift. The reimagining of this library and it's APIs are now heavily based on protocol extensions.
DataSource
DataSourceProtocol
and concrete DataSource
model. This represents (and owns) your sections.FetchedResultsController<T>
, which is a generic NSFetchedResultsController
that conforms to DataSourceProtocol
.All of the *DataSourceProvider
classes have been unified into a single class, DataSourceProvider
. This new class is initialized with a DataSourceProtocol
and replaces all of the following:
TableViewDataSourceProvider
TableViewFetchedResultsDataSourceProvider
CollectionViewDataSourceProvider
CollectionViewFetchedResultsDataSourceProvider
The section objects are now unified into a single Section
object and SectionInfoProtocol
protocol, instead of having table-specific and collection-specific models. The new Section
and SectionInfoProtocol
replace the following:
CollectionViewSectionInfo
CollectionViewSection
TableViewSectionInfo
TableViewSection
The cell factories have been unified into a single ViewFactory
object and ReusableViewFactoryProtocol
protocol, which replace the following:
CollectionViewCellFactoryType
CollectionViewCellFactory
TableViewCellFactoryType
TableViewCellFactory
CollectionSupplementaryViewFactoryType
SupplementaryViewFactory
The *FetchedResultsDelegateProvider
classes have been unified into a single class, FetchedResultsDelegateProvider
, which replaces the following:
CollectionViewFetchedResultsDelegateProvider
TableViewFetchedResultsDelegateProvider
TitledCollectionReusableView
changes:TitledSupplementaryView
TitledCollectionReusableViewFactory
was replaced by TitledSupplementaryViewFactory
xib
, but programmatic layoutTitledCollectionReusableView.xib
was removed
TitledCollectionReusableView.nib
was removed
leadingSpacing
, topSpacing
, trailingSpacing
and bottomSpacing
constraint properties have been removed and replaced with verticalInset
and horizontalInset
propertiesBug fixes from the 3.0.1 milestone.
This release closes the 3.0.0 milestone.
NOTE: This is actually a minor update, but there are breaking changes. Thus, the major version bump.
*DataSourceProvider
classes and *DelegateProvider
classes no longer have an Item
generic type parameter. As pointed out by @MrAlek in #25, this was actually superfluous. Example:// Old
CollectionViewDataSourceProvider<Item, SectionInfo, CellFactory, SupplementaryViewFactory>
TableViewDataSourceProvider<Item, SectionInfo, CellFactory>
// New
CollectionViewDataSourceProvider<SectionInfo, CellFactory, SupplementaryViewFactory>
TableViewDataSourceProvider<SectionInfo, CellFactory>
All we need to ensure is that SectionInfo.Item == CellFactory.Item
for type-safey across these components, thus the top-level Item
simply isn't needed. The behavior of these classes remains unchanged, and initialization is now less verbose.
*FetchedResultsDelegateProvider
and *FetchedResultsDataSourceProvider
will now assert
in init
that the types of items that are fetched by the NSFetchedResultsController
match the types of items that the CellFactory
s configure. :warning:*FetchedResultsDelegateProvider
class have changed to the following. Namely, the controller:
parameter has been renamed to fetchedResultsController:
and is no longer optional.init(collectionView: cellFactory: fetchedResultsController:)
init(tableView: cellFactory: fetchedResultsController:)
All documentation has been updated. :scroll: