Skip to content

Instantly share code, notes, and snippets.

@tifoaudii
Created March 14, 2023 10:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tifoaudii/6022fc4393dc23bb0779fa17e22ae478 to your computer and use it in GitHub Desktop.
Save tifoaudii/6022fc4393dc23bb0779fa17e22ae478 to your computer and use it in GitHub Desktop.
final class SomeViewController: UIViewController {
typealias GetCardModelsCompletion = (Result<[CardModel], Error>) -> Void
typealias GetCardModels = (@escaping GetCardModelsCompletion) -> Void
private var cards: [CardModel] = []
private let getCardModels: GetCardModels
init(getCardModels: @escaping GetCardModels) {
self.getCardModels = getCardModels
super.init(nibName: nil, bundle: .main)
}
required init?(coder: NSCoder) {
fatalError()
}
override func viewDidLoad() {
super.viewDidLoad()
getCardModels { [weak self] result in
switch result {
case .success(let cards):
self?.cards = cards
case .failure(let failure):
print(failure)
}
}
}
}
// From Home Screen
let homeService: CardModelService = HomeService.shared
let viewController: SomeViewController = SomeViewController(getCardModels: homeService.fetchCardModels)
// From Cart Screen
let cartService: CardModelService = CartService.shared
let viewController: SomeViewController = SomeViewController(getCardModels: cartService.fetchCardModels)
// From Profile Screen
let profileService: CardModelService = ProfileService.shared
let viewController: SomeViewController = SomeViewController(getCardModels: profileService.fetchCardModels)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment