From 15fd7a765fc22e2b6376ea0894a38f6fcda159ee Mon Sep 17 00:00:00 2001 From: Joan Disho Date: Thu, 27 Sep 2018 14:04:21 +0200 Subject: [PATCH 1/4] use a typealias for (CellDeclaration) -> CellBinder --- DataSourceKit/CollectionViewDataSource.swift | 5 +++-- DataSourceKit/TableViewDataSource.swift | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/DataSourceKit/CollectionViewDataSource.swift b/DataSourceKit/CollectionViewDataSource.swift index 3f20fe4..32288ee 100644 --- a/DataSourceKit/CollectionViewDataSource.swift +++ b/DataSourceKit/CollectionViewDataSource.swift @@ -9,12 +9,13 @@ import UIKit public class CollectionViewDataSource: NSObject, UICollectionViewDataSource { + public typealias Configurator = (CellDeclaration) -> CellBinder public var cellDeclarations = [] as [CellDeclaration] private var registeredReuseIdentifiers = [] as [String] - private let binderFromDeclaration: (CellDeclaration) -> CellBinder + private let binderFromDeclaration: Configurator - public init(binderFromDeclaration: @escaping (CellDeclaration) -> CellBinder) { + public init(binderFromDeclaration: @escaping Configurator) { self.binderFromDeclaration = binderFromDeclaration super.init() } diff --git a/DataSourceKit/TableViewDataSource.swift b/DataSourceKit/TableViewDataSource.swift index 0d203d2..da6b8ef 100644 --- a/DataSourceKit/TableViewDataSource.swift +++ b/DataSourceKit/TableViewDataSource.swift @@ -9,12 +9,13 @@ import UIKit public class TableViewDataSource: NSObject, UITableViewDataSource { + public typealias Configurator = (CellDeclaration) -> CellBinder public var cellDeclarations = [] as [CellDeclaration] private var registeredReuseIdentifiers = [] as [String] - private let binderFromDeclaration: (CellDeclaration) -> CellBinder + private let binderFromDeclaration: Configurator - public init(binderFromDeclaration: @escaping (CellDeclaration) -> CellBinder) { + public init(binderFromDeclaration: @escaping Configurator) { self.binderFromDeclaration = binderFromDeclaration super.init() } From 5eda26cfe844b7ac329e8f625a253fd08d7eee65 Mon Sep 17 00:00:00 2001 From: Joan Disho Date: Thu, 27 Sep 2018 14:07:01 +0200 Subject: [PATCH 2/4] remove "UICollectionView" from fatalError() --- DataSourceKit/CellBinder.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DataSourceKit/CellBinder.swift b/DataSourceKit/CellBinder.swift index 2c8f1b8..ac4a2e7 100644 --- a/DataSourceKit/CellBinder.swift +++ b/DataSourceKit/CellBinder.swift @@ -26,7 +26,7 @@ public struct CellBinder { self.reuseIdentifier = reuseIdentifier self.configureCell = { cell in guard let cell = cell as? Cell else { - fatalError("Could not cast UICollectionView cell to \(Cell.self)") + fatalError("Could not cast cell to \(Cell.self)") } configureCell(cell) From e1c2b74f7b0d5c32c7d71a4c744457717ad5887d Mon Sep 17 00:00:00 2001 From: Joan Disho Date: Thu, 27 Sep 2018 15:44:03 +0200 Subject: [PATCH 3/4] update to Swift 4.2 --- DataSourceKitTests/Example/CTableViewCell.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DataSourceKitTests/Example/CTableViewCell.swift b/DataSourceKitTests/Example/CTableViewCell.swift index 7b39fd9..b826d91 100644 --- a/DataSourceKitTests/Example/CTableViewCell.swift +++ b/DataSourceKitTests/Example/CTableViewCell.swift @@ -12,7 +12,7 @@ import DataSourceKit class CTableViewCell: UITableViewCell { var idLabel = UILabel(frame: .zero) - override init(style: UITableViewCellStyle, reuseIdentifier: String?) { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) contentView.addSubview(idLabel) idLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) From 740167a6cbc92b29a798b08297d1c56420417773 Mon Sep 17 00:00:00 2001 From: Joan Disho Date: Thu, 27 Sep 2018 15:48:52 +0200 Subject: [PATCH 4/4] mark the code --- DataSourceKit/CollectionViewDataSource.swift | 13 +++++++++++-- DataSourceKit/TableViewDataSource.swift | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/DataSourceKit/CollectionViewDataSource.swift b/DataSourceKit/CollectionViewDataSource.swift index 32288ee..8d341e3 100644 --- a/DataSourceKit/CollectionViewDataSource.swift +++ b/DataSourceKit/CollectionViewDataSource.swift @@ -9,16 +9,25 @@ import UIKit public class CollectionViewDataSource: NSObject, UICollectionViewDataSource { + + // MARK: Public Properties + public typealias Configurator = (CellDeclaration) -> CellBinder public var cellDeclarations = [] as [CellDeclaration] - + + // MARK: Private Properties + private var registeredReuseIdentifiers = [] as [String] private let binderFromDeclaration: Configurator - + + // MARK: Init + public init(binderFromDeclaration: @escaping Configurator) { self.binderFromDeclaration = binderFromDeclaration super.init() } + + // MARK: UICollectionViewDataSource public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return cellDeclarations.count diff --git a/DataSourceKit/TableViewDataSource.swift b/DataSourceKit/TableViewDataSource.swift index da6b8ef..72e3a5c 100644 --- a/DataSourceKit/TableViewDataSource.swift +++ b/DataSourceKit/TableViewDataSource.swift @@ -9,16 +9,25 @@ import UIKit public class TableViewDataSource: NSObject, UITableViewDataSource { + + // MARK: Public Properties + public typealias Configurator = (CellDeclaration) -> CellBinder public var cellDeclarations = [] as [CellDeclaration] - + + // MARK: Private Properties + private var registeredReuseIdentifiers = [] as [String] private let binderFromDeclaration: Configurator - + + // MARK: Init + public init(binderFromDeclaration: @escaping Configurator) { self.binderFromDeclaration = binderFromDeclaration super.init() } + + // MARK: UITableViewDataSource public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return cellDeclarations.count @@ -37,8 +46,10 @@ public class TableViewDataSource: NSObject, UITableViewDataSour } registeredReuseIdentifiers.append(cellBinder.reuseIdentifier) } + let cell = tableView.dequeueReusableCell(withIdentifier: cellBinder.reuseIdentifier, for: indexPath) cellBinder.configureCell(cell) + return cell } }