Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save vantruong1094/621b67ef34c0134ac5a1085b982bd3d6 to your computer and use it in GitHub Desktop.

Select an option

Save vantruong1094/621b67ef34c0134ac5a1085b982bd3d6 to your computer and use it in GitHub Desktop.
class DataBinding<T> {
typealias Handler = (T) -> Void
private var handler: Handler?
var value: T {
didSet {
self.handler?(value)
}
}
init(value: T) {
self.value = value
}
func bind(hdl: @escaping Handler) {
self.handler = hdl
handler?(value)
}
}
class ItemsViewModel {
var items = DataBinding<[ItemModel]>(value: [])
var error = DataBinding<Error?>(value: nil)
func numberItems() -> Int {
return items.value.count
}
func fetchData() {
ServiceManager.fetchItems { [weak self] (items, error) in
guard let self = self else {return}
if error != nil {
self.error = error
} else {
self.items.value = items
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment