Skip to content

Commit b8ece51

Browse files
committed
automatically map to AnyCellViewModel
1 parent 8acaa8d commit b8ece51

File tree

4 files changed

+6
-15
lines changed

4 files changed

+6
-15
lines changed

Example/Sources/Grid/GridViewController.swift

+2-4
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,12 @@ final class GridViewController: UICollectionViewController {
5757

5858
func makeViewModel(from model: Model) -> CollectionViewModel {
5959
let peopleCellViewModels = model.people.map { GridPersonCellViewModel(person: $0) }
60-
let anyPeopleModels = peopleCellViewModels.map { $0.toAnyViewModel() }
6160
let peopleSection = SectionViewModel(id: "section_0_people",
62-
cells: anyPeopleModels)
61+
cells: peopleCellViewModels)
6362

6463
let colorCellViewModels = model.colors.map { GridColorCellViewModel(color: $0) }
65-
let anyColorModels = colorCellViewModels.map { $0.toAnyViewModel() }
6664
let colorSection = SectionViewModel(id: "section_1_colors",
67-
cells: anyColorModels)
65+
cells: colorCellViewModels)
6866

6967
return CollectionViewModel(sections: [peopleSection, colorSection])
7068
}

Example/Sources/List/ListViewController.swift

+2-4
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,12 @@ final class ListViewController: UICollectionViewController {
4141

4242
func makeViewModel(from model: Model) -> CollectionViewModel {
4343
let peopleCellViewModels = model.people.map { ListPersonCellViewModel(person: $0) }
44-
let anyPeopleModels = peopleCellViewModels.map { $0.toAnyViewModel() }
4544
let peopleSection = SectionViewModel(id: "section_0_people",
46-
cells: anyPeopleModels)
45+
cells: peopleCellViewModels)
4746

4847
let colorCellViewModels = model.colors.map { ListColorCellViewModel(color: $0) }
49-
let anyColorModels = colorCellViewModels.map { $0.toAnyViewModel() }
5048
let colorSection = SectionViewModel(id: "section_1_colors",
51-
cells: anyColorModels)
49+
cells: colorCellViewModels)
5250

5351
return CollectionViewModel(sections: [peopleSection, colorSection])
5452
}

Sources/CellViewModel.swift

-4
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,6 @@ extension CellViewModel {
5454
}
5555

5656
public func didSelect(with controller: UIViewController) { }
57-
58-
public func toAnyViewModel() -> AnyCellViewModel {
59-
AnyCellViewModel(self)
60-
}
6157
}
6258

6359
/// A type-erased cell view model.

Sources/SectionViewModel.swift

+2-3
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@ public struct SectionViewModel: DiffableViewModel {
1919

2020
public let cellViewModels: [AnyCellViewModel]
2121

22-
public init(id: UniqueIdentifier,
23-
cells: [AnyCellViewModel]) {
22+
public init<T: CellViewModel>(id: UniqueIdentifier, cells: [T]) {
2423
self.id = id
25-
self.cellViewModels = cells
24+
self.cellViewModels = cells.map { AnyCellViewModel($0) }
2625
}
2726
}
2827

0 commit comments

Comments
 (0)