Skip to content

Instantly share code, notes, and snippets.

View dmlebron's full-sized avatar

David dmlebron

View GitHub Profile
extension Bool {
mutating func toggle() {
self = !self
}
}
class ViewController: UIViewController {
let viewModel = ViewModel()
var jobs = [Job]()
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
viewModel.getJobs(closure: { [unowned self] (result) in
class ViewController: UIViewController {
let viewModel = ViewModel()
var jobs = [Job]()
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
viewModel.getJobs(closure: { (result) in
class ViewController: UIViewController {
let viewModel = ViewModel()
var jobs = [Job]()
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
viewModel.getJobs(closure: { (result) in
enum ViewModelError: Error {
case urlError(String)
case apiClientError(ApiClientError)
}
final class ViewModel {
typealias Closure = (Result) -> ()
enum Result {
enum Constants {
static let jobsUrl = "https://jobs.github.com/positions.json"
}
enum ApiClientError: Error {
case jsonFormat(String)
case responseError(String)
}
final class ApiClient {
func get(url: URL, closure: @escaping Closure)
typealias Closure = (Response) -> ()
enum Response {
case result([Job])
case error(ApiClientError)
}
protocol ApiClientDelegate {
func didFinishLoadingWithJobs(_ jobs: [Job]?)
func didFailedLoadingWithError(_ error: ApiClientError)
}