JSQDataSourcesKit Versions Save

⚠️ Deprecated ⚠️

8.1.1

4 years ago

This library is now deprecated.

See announcement: https://www.jessesquires.com/blog/2020/04/14/deprecating-jsqdatasourceskit/

8.1.0

4 years ago

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

5 years ago

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

6 years ago

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 concrete Section. DataSource now references Section directly. (#103)

New

  • Added new DataSourceProtocol extension convenience method func item(atIndexPath indexPath: IndexPath) -> Item?.
  • Added new TableEditingController to support table view editing functionality provided by UITableViewDataSource. (#29, #80, #100)

6.0.0

7 years ago

This release closes the 6.0.0 milestone.

Swift 3.0 now required.

5.0.0

7 years ago

This release closes the 5.0.0 milestone.

Swift 2.3 now required.

4.0.1

7 years ago

This release closes the 4.0.1 milestone.

  • Fixed an issue with carthage build (#61, #62). Thanks @dcaunt!

4.0.0

7 years ago

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 concrete DataSource model. This represents (and owns) your sections.
  • There's a new FetchedResultsController<T>, which is a generic NSFetchedResultsController that conforms to DataSourceProtocol.
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 by TitledSupplementaryViewFactory
  • No longer uses a xib, but programmatic layout
  • TitledCollectionReusableView.xib was removed
  • TitledCollectionReusableView.nib was removed
  • The leadingSpacing, topSpacing, trailingSpacing and bottomSpacing constraint properties have been removed and replaced with verticalInset and horizontalInset properties

3.0.1

8 years ago

Bug fixes from the 3.0.1 milestone.

3.0.0

8 years ago

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 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.

  • :warning: The *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 CellFactorys configure. :warning:
  • Initializers for *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:)

Documentation

All documentation has been updated. :scroll: