问题标签 [swinject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
382 浏览

swift - 与程序集共享容器 - 如何将相同的对象传递给协调器和控制器

每次我们解析一个协议/类时,我们都会得到一个新对象。我的协调员需要一个视图模型,而我的控制器需要相同的视图模型。

}

协调员就像

}

问题是,当我试图在我的 lsViewController 中注入 viewModel 时,会创建一个不同的 lsViewModel 实例。因此,Rx 绑定不起作用,并且打印语句未执行。有没有办法将相同的视图模型传递给协调器和控制器?

0 投票
1 回答
276 浏览

swift - Swift 中的简单容器绑定?

免责声明:我仍在学习 Swift,如果我不了解 Swift 的某些概念/功能/限制,请原谅我。

使用 Swinject 框架,如果您想将协议绑定到类 - 似乎您必须在闭包中返回类实例,例如:

是否可以改为将两种类型传递给register()方法并让框架为您实例化该类?当然,它需要递归地查看该类是否具有任何初始化程序依赖项(控制反转)。

这在 PHP 世界中是可能的,因为您有反射的概念,它允许您获取依赖项的类类型,允许您即时实例化它们。我想知道 Swift 是否有这种能力?

写这个会更好:

这也将允许您从容器中解析任何类并解决它的依赖关系(无需手动注册类):

注意:这仅对不将标量类型作为依赖项的类有意义(因为它们当然需要明确给出)。

0 投票
1 回答
661 浏览

swift - Swinject:生成任何对象的实例(对于未注册的对象、ViewModel 等...)

是否可以解决/创建未在 Swinject 容器中注册的对象的新实例?在 Unity 的 c#(来自 Microsoft)的依赖注入中就是这样。

我想解决对某些协议有依赖性的 viewModel 类。例如:我在容器中注册了 IFileManager:

我 viewModel 对 IFileManager 有依赖

现在我想使用 Swinject 解析器创建 AwesomeViewModel 的新实例,并且我希望将所有依赖项添加到 init 中,但它不起作用

并且 ViewModel 为零

0 投票
2 回答
935 浏览

ios - 崩溃:Container.swift 第 299 行 Container.resolve(条目:ServiceEntryProtocol,调用者:(B)-> 任何)-> A?

最近,我在尝试解析对象时开始崩溃。以下是崩溃日志。我可以在第 299 行 guard let currentObjectGraph = currentObjectGraph else { fatalError() }的 Container.swift 中看到应用程序没有获取 currentObjectGraph 并且它失败了。可能的原因是什么?在我的项目中,我有一个全局级别的汇编程序,它添加了来自不同框架的所有程序集。但是当我试图解决一个对象时,它会导致崩溃。这是一个中间问题:-

0 投票
2 回答
2240 浏览

ios - 如何将正确的 viewModel 注入单个 viewController

我正在使用Swinject我的 DI 解决方案,并使用扩展对其进行SwinjectStoryboard扩展。

我正在努力动态注入viewModel特定的viewContoller. 具体场景如下:

MyViewController有一个名为 的属性var viewModel: ViewModeling

有 2 种不同的视图模型符合ViewModeling协议,我们称之为:firstViewModelsecondViewModel. 我的故事板只包含一个控制器,它的MyViewController.

问题

注入正确的viewModel作为MyViewController动态的依赖(所以只有在运行时我才会知道是注入第一个还是第二个)

我能够在服务级别上做到这一点(2 个服务符合的一个协议,以及 2 个不同的视图模型,每个视图模型使用不同的服务可以使用特定名称解析所需的一个)

我正在努力在 viewController 级别上执行此操作,尝试将相同的视图控制器注入特定的 viewModel(两者都符合相同的协议)。

目前我的预感是SwinjectStoryboard不允许我使用它的故事板 ID 实例化视图控制器(就像我通常会做的那样),此外还定义了几个将在运行时解析的不同名称。

我错过了什么吗?

0 投票
1 回答
613 浏览

swift - UIViewController 不会取消初始化(mvvm + 协调器)

因为这个问题,我很头疼。为什么我的 SplashscreenViewController 没有取消初始化?你们在下面发布的代码中看到任何潜在的保留周期吗?我试图检查 Malloc 堆栈,但找不到任何有用的信息。

拥有 SplaschreenViewController 实例的类是它的协调器。下面的代码:

还有一些来自 BaseCoordinator 的代码:

提前感谢您的回答!

0 投票
1 回答
2456 浏览

ios - Swinject 容器注册失败

在尝试将一些协议绑定到各种类时,我遇到了进入nil协议的奇怪行为。这是依赖注入器类:

这是AppDelegate

在下面的类中,我得到nil了协议属性:

网络 var 始终nil在使用storyboardInitCompleted网络 var 的其他类中有效。

我究竟做错了什么?

0 投票
1 回答
124 浏览

swift - SwinjectStoryboard - 是否可以加载/注入其 ViewController 存在于另一个项目的不同框架中的故事板?

SwinjectStoryboard - 是否可以加载/注入其 ViewController 存在于另一个项目的不同框架中的故事板?

0 投票
3 回答
565 浏览

ios - Swinject - 如何从一个解析器两次解析同一个控制器?

而且...底部只有一个 TabBarItem。为什么?

如果我这样使用它:

那么一切都很好。;)在我的实现中,Swinject 有什么问题?

0 投票
0 回答
163 浏览

dependency-injection - 使用 Swinject+Assembly 将数据从模态传递到呈现 vc

我正在使用 RxSwift + Swinject + Assembly 开发一个项目,但它们对我来说很新。我有一个用于过滤器选择的模态控制器。它使用带有所有可用过滤器的 FilterViewModel。我想知道如何将选定的过滤器传递给呈现视图控制器?我现在可以将呈现视图控制器转换为预期类型并将过滤器设置为 vc 的属性,但我想以正确的方式使用 DI 和程序集。