问题标签 [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 投票
1 回答
232 浏览

ios - 每次使用 Swinject 解析对象时如何返回相同的实例?

目前我这样做:

它不起作用。有没有办法在我第一次使用标签栏项目数组初始化它后每次都返回相同的实例?

0 投票
1 回答
440 浏览

ios - swinject 是否重新实例化对象?

我有一个问题,我在一个单独的框架中使用 Swinject。

我的应用程序从这个框架中获取对象,我的 appExtension 也使用它。

但是在扩展中,对象没有正确实例化。Swinject 是使用我的对象的第一个实例还是重新创建另一个?

谢谢

0 投票
0 回答
286 浏览

ios - 崩溃:Container.swift 第 242 行 Container.resolve(条目:调用者:)

我收到以下错误。让我知道我做错了什么:- Container.swift 是 Swinject 库中的一个文件。链接:https ://github.com/Swinject/Swinject/blob/master/Sources/Container.swift

代码:

在 App 上启动确实变得活跃:

大会注册码:

Container.Swift 第 242 行

0 投票
1 回答
26 浏览

swinject - 可以注册仅静态协议吗?

不幸的是,一些库只有静态方法。是否可以让 Swinject 注册一个类型以返回一个类型而不是一个类型的实例?很难将仅用于测试的静态库排除在外。

0 投票
2 回答
528 浏览

ios - 具有泛型的 Swift func where 约束是一个自符合的协议

我正在尝试编写一个静态泛型方法,它将协议作为参数并在 Swinject 容器中注册类实例作为协议解析。重要的是我不能将模块注册为它不符合的协议。

我写了这样的东西:

它不能编译,因为显然 Self 可能不符合 P

我还尝试使用以下方法指定通用约束where

  1. where Self: P确实编译错误“类型'Self'被限制为非协议,非类类型'P'”
  2. where self: P多次编译错误。
  3. where Self: P.Type确实编译错误“类型'Self'被限制为非协议,非类类型'P.Type'”
  4. where self: P.Type有多个编译错误。

我还想知道我是否可以指定 P 只能是协议的约束。

0 投票
1 回答
260 浏览

swift - 在 xib 控制器中注入依赖项

我正在开发一个仅包含菜单栏图标的 macOS 应用程序。

我有一个带有菜单的 xib 文件(MenuBarMenu.xib)和一个相应的控制器(MenuBarMenuController.swift),它把它放在菜单栏中。

在此处输入图像描述

我想手动或使用 Swinject 在此控制器中注入依赖项。

所以要做到这一点,我想我可以从 AppDelegate 以编程方式加载 xib 文件:

但看起来控制器在到达 applicationDidFinishLaunching 之前由 NSApplication 自动实例化。

我试过的:

  1. 从 info.plist 中删除 NSMainNibFile
  2. 从 info.plist 中删除 NSMainStoryboardFile
  3. 清除项目设置中的主界面设置
  4. 添加了 LSUIElement = 是
  5. 使用自定义 main.swift确保调用了我的 AppDelegate。

如果存在 xib 文件,则在 AppDelegate 之前调用它。当我删除它时,没有运行时错误。

我的问题是:如何在此控制器中注入依赖项?

0 投票
0 回答
47 浏览

ios - 线程 17:EXC_BAD_INSTRUCTION 代码=EXC_1386_INVOP,子代码=0x0)

为什么当我尝试运行我的应用程序时它仍然会发生?这是在SwinjectPod 内:

这是发生问题的地方:

在此处输入图像描述

这是我的调试层次结构:

在此处输入图像描述

0 投票
0 回答
135 浏览

swift - 如何将 viewModel 类注入 WKInterfaceController?

我正在尝试将我的 viewModel 类注入到 WKInterfaceController,在我的 InterfaceController 中我设置了属性,但是当我尝试在其中使用它时func awake(withContext context: Any?),它为零。

所以我尝试这样做的方式是:在 ExtensionDelegate 中设置容器,并在方法 onInitCompleted 中使用 viewModel 类向它注册我的interferenceController。

我的代码:

https://pastebin.com/jFaLHi2m

在我尝试使用我的 viewModel 的那一行,我得到:

线程 1:EXC_BREAKPOINT(代码=1,子代码=0x524abc)

你知道如何正确地将类注入 WKInterfaceController 吗?

0 投票
1 回答
255 浏览

ios - Swinject:如何将委托模式与接口隔离(类与接口)一起使用?

我正在努力解决注入依赖问题。现在问题来了,在委托模式的情况下如何使用接口隔离原则?我正在使用 Swinject 框架进行依赖注入。我该如何解决这个问题?

孩子班,到目前为止没有什么异常。

但是要正确注入依赖项,我需要一个协议而不是直接的类引用,对吗?像这样:

简而言之,我在绕圈子。如果我为子类使用接口,我无法访问委托属性,如果我使用类引用,我无法合理地模拟/存根接口方法。

我错过了什么?提前非常感谢!

0 投票
0 回答
679 浏览

ios - iOS:Swinject 创建依赖注入容器层次结构的正确方法

我使用了 KooberApp 的示例项目(它是 Raywenderlich 书籍高级架构示例项目),并尝试使用某些框架替换自定义的控制容器反转和依赖注入代码。我认为最流行的 iOS 依赖注入框架是 Swinject。在那里我可以为服务注册组件。我想类似于原始应用程序组件的生命周期。经过一番运行和尝试,应用程序似乎可以正常工作。但我不能 100% 确定我使用的方法是最好的,并且我没有错过重要的事情。我认为我仍然可以与组件生命周期存在一些不一致,即使用范围 .container、.graph、.transient、.weak

我有人可以建议这个 Container 实现是否正确,或者应该修复、更改、修改、做得更好?

应用容器

主容器

登录容器

入职容器

这里 App Container 是在 AppDelegate 中创建的,子容器在父容器中注册并 init 注入到视图控制器中,然后存储在属性中并用于初始化这个子视图控制器

这是注入子容器(Main-Scoped)的 MainViewController 示例