问题
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?
回答1:
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:
NetworkModeling
andNetwork
are visible in scope of your registration (they arepublic
, orinternal
in the same module. remember, that swift3 introducedfileprivate
and many other specifiers, so make sure your identifiers are visible to registeting codeMake sure that
Network
conforms toNetworkModeling
. Being unable to see inheritance, swift compiler raises error about ambigous types for Swinject factory
Hope, this helps
来源:https://stackoverflow.com/questions/39813830/swinject-ambiguous-reference-to-member