Skip to content

Instantly share code, notes, and snippets.

View s-hocking's full-sized avatar

Steven Hocking s-hocking

  • Australia
View GitHub Profile
// In a class that wants an instance of RGBColourViewModel
extension RGBColourViewController: Resolving {
func makeViewModel(input: RGBColourViewModel.Input) -> RGBColourViewModel {
Resolver.resolve(args: input)
}
}
// In our +Injection.swift file
extension Resolver: ResolverRegistering {
public static func registerAllServices() {
register { _, args in
RGBColourViewModel(input: args(), colourTransformService: resolve())
}
}
}
class RGBColourViewModel {
init(input: Input, colourTransformService: ColourTransformService) {
// setup logic
}
}
class RGBColourViewController: UIViewController {
let rgbColourView = RGBColourView()
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
// Create the view model and provide the input observables
let viewModel = RGBColourViewModel(
input: RGBColourViewModel.Input(
private func transform(redString: String?, greenString: String?, blueString: String?) -> UIColor {
guard let redString = redString,
let greenString = greenString,
let blueString = blueString else {
return .black
}
guard let red = Double(redString),
let green = Double(greenString),
let blue = Double(blueString) else {
class RGBColourViewModel {
private let input: Input
lazy var output: Output = {
createOutput()
}()
init(input: Input) {
self.input = input
}
@s-hocking
s-hocking / output.swift
Created May 26, 2021 05:36
output.swift
struct Output {
let colour: Driver<UIColor>
}
@s-hocking
s-hocking / input.swift
Created May 26, 2021 05:33
input.swift
struct Input {
let red: Observable<String?>
let green: Observable<String?>
let blue: Observable<String?>
}