Search code examples
swiftdependency-injectionswinject

Swinject - Ambiguous reference to member


I am using Swinject in my Swift 3 app. When I tried

let container = Container()
container.register(NetworkModeling.self) { _ in Network() }

I get an error saying

Ambiguous reference to member 'register(_:name:factory:)'

What is wrong here?


Solution

  • I faced the same issue and i think compiler could be a bit more verbose in this case.

    Anyway, my problem was on my side, not in Swinject

    Check the following:

    1. NetworkModeling and Network are visible in scope of your registration (they are public, or internal in the same module. remember, that swift3 introduced fileprivate and many other specifiers, so make sure your identifiers are visible to registeting code

    2. Make sure that Network conforms to NetworkModeling. Being unable to see inheritance, swift compiler raises error about ambigous types for Swinject factory

    Hope, this helps