Skip to content

Commit ec6e626

Browse files
committed
Simplifications of examples.
1 parent 574de1a commit ec6e626

8 files changed

+109
-99
lines changed

Example/ViewController.swift renamed to Example/Example2_RandomizedSectionsAnimation.swift

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,10 @@ class ViewController: UIViewController {
9898
}
9999
.addDisposableTo(disposeBag)
100100
}
101+
}
101102

102-
// MARK: Skinning
103+
// MARK: Skinning
104+
extension ViewController {
103105

104106
func skinTableViewDataSource(dataSource: RxTableViewSectionedDataSource<NumberSection>) {
105107
dataSource.configureCell = { (_, tv, ip, i) in
@@ -158,20 +160,21 @@ class ViewController: UIViewController {
158160
}
159161

160162

161-
let _initialValue: [NumberSection] = [
162-
NumberSection(header: "section 1", numbers: $([1, 2, 3]), updated: NSDate()),
163-
NumberSection(header: "section 2", numbers: $([4, 5, 6]), updated: NSDate()),
164-
NumberSection(header: "section 3", numbers: $([7, 8, 9]), updated: NSDate()),
165-
NumberSection(header: "section 4", numbers: $([10, 11, 12]), updated: NSDate()),
166-
NumberSection(header: "section 5", numbers: $([13, 14, 15]), updated: NSDate()),
167-
NumberSection(header: "section 6", numbers: $([16, 17, 18]), updated: NSDate()),
168-
NumberSection(header: "section 7", numbers: $([19, 20, 21]), updated: NSDate()),
169-
NumberSection(header: "section 8", numbers: $([22, 23, 24]), updated: NSDate()),
170-
NumberSection(header: "section 9", numbers: $([25, 26, 27]), updated: NSDate()),
171-
NumberSection(header: "section 10", numbers: $([28, 29, 30]), updated: NSDate())
172-
]
173163
}
174164

165+
let _initialValue: [NumberSection] = [
166+
NumberSection(header: "section 1", numbers: $([1, 2, 3]), updated: NSDate()),
167+
NumberSection(header: "section 2", numbers: $([4, 5, 6]), updated: NSDate()),
168+
NumberSection(header: "section 3", numbers: $([7, 8, 9]), updated: NSDate()),
169+
NumberSection(header: "section 4", numbers: $([10, 11, 12]), updated: NSDate()),
170+
NumberSection(header: "section 5", numbers: $([13, 14, 15]), updated: NSDate()),
171+
NumberSection(header: "section 6", numbers: $([16, 17, 18]), updated: NSDate()),
172+
NumberSection(header: "section 7", numbers: $([19, 20, 21]), updated: NSDate()),
173+
NumberSection(header: "section 8", numbers: $([22, 23, 24]), updated: NSDate()),
174+
NumberSection(header: "section 9", numbers: $([25, 26, 27]), updated: NSDate()),
175+
NumberSection(header: "section 10", numbers: $([28, 29, 30]), updated: NSDate())
176+
]
177+
175178
func $(numbers: [Int]) -> [IntItem] {
176179
return numbers.map { IntItem(number: $0, date: NSDate()) }
177180
}

Example/EditingExampleViewController.swift renamed to Example/Example3_TableViewEditing.swift

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import RxDataSources
1111
import RxSwift
1212
import RxCocoa
1313

14+
// redux like editing example
1415
class EditingExampleViewController: UIViewController {
1516

1617
@IBOutlet weak var addButton: UIBarButtonItem!
@@ -27,22 +28,16 @@ class EditingExampleViewController: UIViewController {
2728
NumberSection(header: "Section 3", numbers: [], updated: NSDate())]
2829

2930
let initialState = SectionedTableViewState(sections: sections)
30-
let addCommand = Observable.of(addButton.rx_tap.asObservable(), Observable.of((), (), ()))
31+
let add3ItemsAddStart = Observable.of((), (), ())
32+
let addCommand = Observable.of(addButton.rx_tap.asObservable(), add3ItemsAddStart)
3133
.merge()
32-
.scan(0) { x, _ in x + 1 }
33-
.map { (number: Int) -> TableViewEditingCommand in
34-
let randSection = Int(arc4random_uniform(UInt32(sections.count)))
35-
let item = IntItem(number: number, date: NSDate())
36-
return TableViewEditingCommand.AppendItem(item: item, section: randSection)
37-
}
34+
.map(TableViewEditingCommand.addRandomItem)
35+
3836
let deleteCommand = tableView.rx_itemDeleted.asObservable()
39-
.map {
40-
return TableViewEditingCommand.DeleteItem($0)
41-
}
37+
.map(TableViewEditingCommand.DeleteItem)
38+
4239
let movedCommand = tableView.rx_itemMoved
43-
.map { (sourceIndex, destinationIndex) in
44-
return TableViewEditingCommand.MoveItem(sourceIndex: sourceIndex, destinationIndex: destinationIndex)
45-
}
40+
.map(TableViewEditingCommand.MoveItem)
4641

4742
Observable.of(addCommand, deleteCommand, movedCommand)
4843
.merge()
@@ -146,6 +141,15 @@ struct SectionedTableViewState {
146141
}
147142
}
148143

144+
extension TableViewEditingCommand {
145+
static func addRandomItem() -> TableViewEditingCommand {
146+
let randSection = Int(arc4random_uniform(UInt32(3)))
147+
let number = Int(arc4random_uniform(UInt32(100)))
148+
let item = IntItem(number: number, date: NSDate())
149+
return TableViewEditingCommand.AppendItem(item: item, section: randSection)
150+
}
151+
}
152+
149153
func + <T>(lhs: [T], rhs: T) -> [T] {
150154
var copy = lhs
151155
copy.append(rhs)

Example/MultipleSectionModelViewController.swift renamed to Example/Example4_DifferentSectionAndItemTypes.swift

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,7 @@ import RxDataSources
1111
import RxCocoa
1212
import RxSwift
1313

14-
enum MultipleSectionModel {
15-
case ImageProvidableSection(title: String, items: [SectionItem])
16-
case ToggleableSection(title: String, items: [SectionItem])
17-
case StepperableSection(title: String, items: [SectionItem])
18-
}
19-
20-
enum SectionItem {
21-
case ImageSectionItem(image: UIImage, title: String)
22-
case ToggleableSectionItem(title: String, enabled: Bool)
23-
case StepperSectionItem(title: String)
24-
}
25-
26-
extension MultipleSectionModel: SectionModelType {
27-
typealias Item = SectionItem
28-
29-
var items: [SectionItem] {
30-
switch self {
31-
case .ImageProvidableSection(title: _, items: let items):
32-
return items.map {$0}
33-
case .StepperableSection(title: _, items: let items):
34-
return items.map {$0}
35-
case .ToggleableSection(title: _, items: let items):
36-
return items.map {$0}
37-
}
38-
}
39-
40-
init(original: MultipleSectionModel, items: [Item]) {
41-
self = original
42-
}
43-
}
44-
14+
// the trick is to just use enum for different section types
4515
class MultipleSectionModelViewController: UIViewController {
4616

4717
@IBOutlet weak var tableView: UITableView!
@@ -100,6 +70,37 @@ class MultipleSectionModelViewController: UIViewController {
10070

10171
}
10272

73+
enum MultipleSectionModel {
74+
case ImageProvidableSection(title: String, items: [SectionItem])
75+
case ToggleableSection(title: String, items: [SectionItem])
76+
case StepperableSection(title: String, items: [SectionItem])
77+
}
78+
79+
enum SectionItem {
80+
case ImageSectionItem(image: UIImage, title: String)
81+
case ToggleableSectionItem(title: String, enabled: Bool)
82+
case StepperSectionItem(title: String)
83+
}
84+
85+
extension MultipleSectionModel: SectionModelType {
86+
typealias Item = SectionItem
87+
88+
var items: [SectionItem] {
89+
switch self {
90+
case .ImageProvidableSection(title: _, items: let items):
91+
return items.map {$0}
92+
case .StepperableSection(title: _, items: let items):
93+
return items.map {$0}
94+
case .ToggleableSection(title: _, items: let items):
95+
return items.map {$0}
96+
}
97+
}
98+
99+
init(original: MultipleSectionModel, items: [Item]) {
100+
self = original
101+
}
102+
}
103+
103104
extension MultipleSectionModel {
104105
var title: String {
105106
switch self {
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)