Latest 2.0.1
License BSD
Platforms ios 8.0, osx 10.10, watchos 2.0, tvos 9.0, requires ARC

Build Status
CocoaPods Compatible
Carthage Compatible

Dependency injector Swift. Compatible for swift server-side and swift for iOS



To install DGDependencyInjector with CocoaPods, add the following lines to your Podfile.

source ''
platform :ios, '8.0' # or platform :osx, '10.10' if your target is OS X.

pod 'DGDependencyInjector'

The Basics

First you must create a Module and register some providers

let module = Module()

IAnimal is a protocol that MUST be implemented by the Dog class

public protocol IAnimal {

    var name: String { get }

    func scream() -> String

open class Dog: IAnimal, Injectable {

    public var name: String

    public required convenience init(injector: Injector, arguments: [String : Any]?) throws {
        self.init(name: arguments?["name"] as? String ?? "Athina")

    init(name: String) { = name

    public func scream() -> String {
        return "Barking"

After that, you must register your module inside an injector

Injector.default.register(module: module)

Finally, inject an IAnimal and retrieve a concrete class registered inside your module

if let animal = try? Injector.default.inject(IAnimal.self) {
  print( // print Athina
  print(animal.scream()) // print Barking



Register a provider that handle arguments :

let module = Module()
module.bind(IAnimal.self).with { (_, arguments) -> IAnimal? in
  if let name = arguments?["name"] as? String {
    return Dog(name: name)
  return nil
Injector.default.register(module: module)

Inject an IAnimal with arguments Dictionary<String, Any> :

if let animal = Injector.default.inject(IAnimal.self, arguments: ["name": "Athina"]) {
  print( // print Athina
  print(animal.scream()) // print Barking
if let otherAnimal = Injector.default.inject(IAnimal.self, arguments: ["name": "Yoda"]) {
  print( // print Yoda
  print(otherAnimal.scream()) // print Barking


See for more details!

This project adheres to the Contributor Covenant Code of Conduct.
By participating, you are expected to uphold this code. Please report
unacceptable behavior to [email protected].


DGDependencyInjector is licensed under the BSD 3-Clause license.

Latest podspec

    "name": "DGDependencyInjector",
    "version": "2.0.1",
    "summary": "Dependency injector made in pure swift",
    "homepage": "",
    "license": {
        "type": "BSD",
        "file": "LICENSE"
    "authors": {
        "Digipolitan": "[email protected]"
    "source": {
        "git": "",
        "tag": "v2.0.1"
    "source_files": "Sources/**/*.{swift,h}",
    "platforms": {
        "ios": "8.0",
        "osx": "10.10",
        "watchos": "2.0",
        "tvos": "9.0"
    "requires_arc": true,
    "pushed_with_swift_version": "3.0"

Pin It on Pinterest

Share This