From a28d7636020468a1d7141979b8a146a0bcbfb1d0 Mon Sep 17 00:00:00 2001 From: Carlos Alcala Date: Sun, 30 Oct 2016 15:28:29 -0700 Subject: [PATCH] Fixed With Structs --- Generics.playground/Contents.swift | 39 +++++++++++------- .../UserInterfaceState.xcuserstate | Bin 0 -> 7025 bytes Generics.playground/timeline.xctimeline | 6 --- 3 files changed, 24 insertions(+), 21 deletions(-) create mode 100644 Generics.playground/playground.xcworkspace/xcuserdata/icarlitux.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 Generics.playground/timeline.xctimeline diff --git a/Generics.playground/Contents.swift b/Generics.playground/Contents.swift index ef89622..3ef259b 100644 --- a/Generics.playground/Contents.swift +++ b/Generics.playground/Contents.swift @@ -2,48 +2,57 @@ import UIKit protocol Configurable { associatedtype U - func configure(with data:U) + mutating func configure(with data:U) } -class ArrayVC : UITableViewController where Cell:Configurable { - var data:[Configurable.associatedtype] = [] +struct Element : Configurable { + typealias U = String + + var name: String? + + internal mutating func configure(with data: String) { + name = data + } +} +class ArrayVC : UITableViewController where Cell:Configurable { + + var data = [Element]() + let cellID = "cell" - + override func viewDidLoad() { super.viewDidLoad() tableView.register(Cell.self, forCellReuseIdentifier: cellID) } - + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return data.count } - + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath) as! Cell cell.configure(with: data[indexPath.row]) return cell } - + } extension UITableViewCell: Configurable { - typealias U = String - - func configure(with data: UITableViewCell.U) { - textLabel?.text = data + typealias U = Element + + func configure(with data: Element) { + textLabel?.text = data.name } } - class MyVC : ArrayVC { - + override func viewDidLoad() { super.viewDidLoad() - data = ["John", "Ben", "Alice"] + data = [Element(name: "John"), Element(name: "Ben"), Element(name: "Alice")] title = "Array View Controller" } - } import PlaygroundSupport diff --git a/Generics.playground/playground.xcworkspace/xcuserdata/icarlitux.xcuserdatad/UserInterfaceState.xcuserstate b/Generics.playground/playground.xcworkspace/xcuserdata/icarlitux.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..5e7f660d2a99a6aee2a2aa874dc42be887592c82 GIT binary patch literal 7025 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 L%4g(%{EYtvnctE> literal 0 HcmV?d00001 diff --git a/Generics.playground/timeline.xctimeline b/Generics.playground/timeline.xctimeline deleted file mode 100644 index bf468af..0000000 --- a/Generics.playground/timeline.xctimeline +++ /dev/null @@ -1,6 +0,0 @@ - - - - -