Swinject を使用してマルチモジュール ワークスペースの DI をセットアップしようとしています。ParentProject
から構築されたバイナリフレームワークを埋め込むものがありますChildProject
(したがってParentProject
、からのすべての公開コードが含まれますChildProject
)。
私のアプローチは、モジュールごとに 1 つのアセンブリを作成し、それらを ParentProject で一緒にアセンブルすることです。私が得ているエラーは私にとって本当に奇妙です.1つを取ってくださいNSPersistentContainer
:
Swinject: Resolution failed. Expected registration:
{ Service: NSPersistentContainer, Factory: Resolver -> NSPersistentContainer }
Available registrations:
{ Service: NSPersistentContainer, Factory: Resolver -> NSPersistentContainer, ObjectScope: container }
ParentProject からのアセンブリの例:
public class ParentProjectAssembly: Assembly {
...
public func assemble(container: Container) {
...
container.register(NSPersistentContainer.self) { _ in
return self.persistentContainer
}.inObjectScope(.container)
...
}
}
ChildProjectAssembly
この登録コードを に移動するか、両方に登録するかは問題ではありません。エラーは常に同じです。私のアセンブラはAssembler([ParentProjectAssembly(), ChildProjectAssembly()]
、(今のところ) ParentProject の AppDelegate にあります。すべてが正常に機能しているようで、assemble(container:)
メソッドにはすべてのアセンブリに対して同じコンテナがあり、いくつかの注入は機能しますが、他のものにはこのエラーがあり、objectScope をまったく指定せずにサービスを登録する必要があることを示唆していますか? それは不可能です。
ヘルプ