Releases: jessesquires/JSQDataSourcesKit
8.1.1: Deprecated
This library is now deprecated.
See announcement:
https://www.jessesquires.com/blog/2020/04/14/deprecating-jsqdatasourceskit/
8.1.0
This release closes the 8.1.0 milestone.
Changed
- Upgraded to Swift 5.1
- Update to Xcode 11
- Update SwiftLint to 0.35.0
8.0.0
This release closes the 8.0.0 milestone.
Breaking
- iOS 11.0 minimum now required
- tvOS 11.0 minimum now required
New
- Upgraded to Swift 4.2
- Update to Xcode 10.2
- Update SwiftLint to 0.31.0
7.0.0
This release closes the 7.0.0 milestone.
Breaking
-
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
- Updated function param names
cellFactory:
-->cellConfig:
- Updated function param names
supplementaryFactory:
-->supplementaryConfig:
-
Removed
SectionInfoProtocol
in favor of using a concreteSection
.DataSource
now referencesSection
directly. (#103)
New
6.0.0
This release closes the 6.0.0 milestone.
Swift 3.0 now required.
5.0.0
This release closes the 5.0.0 milestone.
Swift 2.3 now required.
4.0.1
This release closes the 4.0.1 milestone.
4.0.0
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.
New 🎉
- tvOS support
- Swift Package Manager support
Bug fixes 🐛
- Fixed crash when dequeuing a supplementary view for an empty collection view section (#38). You can now have supplementary views for empty sections.
⚠️ Breaking changes ⚠️
Swift
- Updated to Swift 2.2.
- Swift 2.2. and above is now required.
Major API changes
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.
New DataSource
- There's a new
DataSourceProtocol
and concreteDataSource
model. This represents (and owns) your sections. - There's a new
FetchedResultsController<T>
, which is a genericNSFetchedResultsController
that conforms toDataSourceProtocol
.
DataSourceProvider objects
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:
- Removed
TableViewDataSourceProvider
- Removed
TableViewFetchedResultsDataSourceProvider
- Removed
CollectionViewDataSourceProvider
- Removed
CollectionViewFetchedResultsDataSourceProvider
Section objects
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:
- Removed
CollectionViewSectionInfo
- Removed
CollectionViewSection
- Removed
TableViewSectionInfo
- Removed
TableViewSection
Cell factory objects
The cell factories have been unified into a single ViewFactory
object and ReusableViewFactoryProtocol
protocol, which replace the following:
- Removed
CollectionViewCellFactoryType
- Removed
CollectionViewCellFactory
- Removed
TableViewCellFactoryType
- Removed
TableViewCellFactory
- Removed
CollectionSupplementaryViewFactoryType
- Removed
SupplementaryViewFactory
FetchedResultsDelegateProviers
The *FetchedResultsDelegateProvider
classes have been unified into a single class, FetchedResultsDelegateProvider
, which replaces the following:
- Remove
CollectionViewFetchedResultsDelegateProvider
- Remove
TableViewFetchedResultsDelegateProvider
TitledCollectionReusableView
changes:
- Renamed to
TitledSupplementaryView
TitledCollectionReusableViewFactory
was replaced byTitledSupplementaryViewFactory
- No longer uses a
xib
, but programmatic layout TitledCollectionReusableView.xib
was removedTitledCollectionReusableView.nib
was removed- The
leadingSpacing
,topSpacing
,trailingSpacing
andbottomSpacing
constraint properties have been removed and replaced withverticalInset
andhorizontalInset
properties
3.0.1
3.0.0
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.
Breaking changes
- All
*DataSourceProvider
classes and*DelegateProvider
classes no longer have anItem
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.
⚠️ The*FetchedResultsDelegateProvider
and*FetchedResultsDataSourceProvider
will nowassert
ininit
that the types of items that are fetched by theNSFetchedResultsController
match the types of items that theCellFactory
s configure.⚠️ - Initializers for
*FetchedResultsDelegateProvider
class have changed to the following. Namely, thecontroller:
parameter has been renamed tofetchedResultsController:
and is no longer optional.
init(collectionView: cellFactory: fetchedResultsController:)
init(tableView: cellFactory: fetchedResultsController:)
Documentation
All documentation has been updated. 📜