import Swinject
extension SwinjectStoryboard {
class func setup() {
// Registering concrete classes
// You can use protocols instead and you\'ll be able to use Swinject in your Unit Tests too!
// It\'s important to call .inObjectScope(.Container), so Swinject uses the same object instance
// for all resolves
defaultContainer.register(DatabaseContext.self) { _ in DatabaseContext() }.inObjectScope(.Container)
defaultContainer.register(NetworkingContext.self) { _ in NetworkingContext() }.inObjectScope(.Container)
defaultContainer.register(LocalConfigContext.self) { _ in LocalConfigContext() }.inObjectScope(.Container)
defaultContainer.register(ViewModelContext.self){ _ in ViewModelContext() }.inObjectScope(.Container)
// Registering View Controller in the storyboard
defaultContainer.registerForStoryboard(ViewController.self) { r, c in
c.database = r.resolve(DatabaseContext.self)
c.networking = r.resolve(NetworkingContext.self)
c.config = r.resolve(LocalConfigContext.self)
c.viewModel = r.resolve(ViewModelContext.self)
}
// Registering the second view controller
defaultContainer.registerForStoryboard(SecondViewController.self) { r, c in
c.database = r.resolve(DatabaseContext.self)
c.networking = r.resolve(NetworkingContext.self)
c.viewModel = r.resolve(ViewModelContext.self)
}
}
}