2

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 をまったく指定せずにサービスを登録する必要があることを示唆していますか? それは不可能です。

ヘルプ

4

0 に答える 0