问题标签 [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 回答
4245 浏览

ios - 在 Swift 中使用 Swinject 将 Model 类实例注入到 View 类实例中

在 Swift 2.0 单页应用程序项目中,在 XCode 7.0.1 中,使用 Swift 依赖注入框架Swinject,我正在执行以下操作:

复制协议.swift:

SingletonProtocol.swift:

复制代理.swift

SingletonProxy.swift:

ViewController.swift:

AppDelegate.swift:

这是我不幸得到的控制台日志:

尽可能简单地说:我需要做出哪些改变?谢谢你,JBM。

0 投票
1 回答
319 浏览

swift - 解析符合协议的类和对象

我想传递一个符合某些协议的对象,并使用Swinject 框架(通过依赖注入)解析其分配类型。

错误:无法使用类型为“(Any.Type)”的参数列表调用“解决”

如何从确认协议的对象中获取类,也许除了反射还有另一种选择?

0 投票
1 回答
1721 浏览

ios - Swinject:迁移到程序集

我在我的项目中为 DI 使用了很棒的Swinject,但我在没有程序集的情况下使用它(当我开始使用 Swinject 时,还没有程序集)。

我目前的使用模式Containers是:

使用该配置:

  • 容器只要它们需要存活就可以存活(唯一持有对它们的引用的实体 - VC,可以使用依赖项)
  • 我可以停止使用/切换 DI 框架,Container甚至用手动构建替换(我的代码不知道任何框架),因为我的代码调用:let topController = ParentContainer().myTopLevelController()

现在我正在尝试申请Assembly。据我所知,我的容器现在将符合AssemblyType协议。但我有一些困惑:

  1. 我应该通过组装而不是通过容器来解决实例吗?
  2. 方法的目的是func loaded(resolver: ResolverType)什么?我应该保留解析器吗?它会导致保留周期吗?
  3. 我想要 TopLevelAssembly,但仍将容器用于叶实体。是否可以将 Assembly 作为容器的父级传递?或者还有其他方法可以实现吗?
0 投票
1 回答
1363 浏览

ios - Swinject 的循环依赖问题

我在我的 Swift iOS 应用程序中使用 Swinject 并尝试按照官方文档页面中的说明进行循环依赖:https ://github.com/Swinject/Swinject/blob/master/Documentation/CircularDependencies.md

我从循环依赖示例中复制了代码,并在类中添加了一些东西,没有修改依赖注册代码中的任何内容。

类和协议如下所示:

依赖配置代码如下所示(与示例相同):

上面的代码在我的 AppDelegate 的 " application:didFinishLaunchingWithOptions" 函数中。在注册码之后,我添加了这个小测试代码:

输出是这样的:

错误发生在这一行: return parent!.getMyName()

奇怪的是我在该行上放置了一个断点,这就是发生的事情:

  • 代码在断点处停止
  • 我看了一下self,它看起来正确初始化,parent属性看起来正确(对父实例的引用)
  • 我“跳过”,发生错误,现在parent属性是nil

我对这种循环依赖做错了吗?

此代码位于“空”单视图 iOS 应用程序中,仅通过 Carthage 添加了 Swinject 作为依赖项。

XCode 版本 7.2.1

通过 Carthage 安装的 Swinject 1.1 版

0 投票
1 回答
657 浏览

swift - Swinject 测试解决服务

我正在寻找一种方法来测试服务是否已在 .Container 范围内解决。我的应用程序在启动时启动了一些“服务”,我想确保这些服务已经得到解决,而不会触发它们被解决。

0 投票
0 回答
262 浏览

swift - 在这种情况下注入工厂是否有意义(Swinject)

什么是正确(最干净和最简洁)的方式PetOwner,可以在程序的任何后期创建新的实例Cat

假设它可以在响应某些异步请求后createAnotherAnimal自行调用,因此在创建时创建所需的尽可能多的实例是不可能的。PetOwnerCatPetOwner

我解决了注入工厂的问题,但我不相信这是解决问题的最佳方法,Swinject 中有哪些替代方案?

0 投票
1 回答
295 浏览

realm - 结合 Swinject 和 Realm

感谢那个框架。我真的很喜欢这个想法,我渴望使用它!但是,我目前正在尝试使用一个使用领域的应用程序来启动和运行它。我最初认为,创建一个 realmService 可能是个好主意,我将它注入到我的模型中并处理所有领域的写入内容。

可悲的是,我无法决定如何正确地做到这一点。Wether App 示例很棒,但它没有涵盖任何领域模型。有什么提示可以指出我正确的方向吗?我尝试通过构造函数和属性,但我无法让它工作。我想,我错过了一些概念性的东西。

谢谢,我很想向你学习:)

干杯

0 投票
3 回答
3527 浏览

ios - 使用 Swinject 时如何将参数传递给 resolve 方法?

我有一个测试项目,我试图将参数传递给Swinject项目中的 resolve 方法。

这是我的 Swinject 故事板扩展文件中包含的示例。

在我的 ViewController 中,我正在尝试执行以下操作来解决 GetMessageAction

当我的 getMessage 函数运行时,我收到以下消息

致命错误:在展开可选值时意外发现 nil

0 投票
0 回答
1124 浏览

ios - Swinject:MVVM 和情节提要设置

这是我使用Swinject的第一个项目,我想确保正确使用它。

来自 C++/Objective-C 背景,我对依赖注入容器没有太多经验。

我遵循 MVVM 架构,使用SwinjectStoryboard并让故事板为我实例化所有视图控制器。

这是我的设置:

几个问题:

  • 可以使用defaultContainer情节提要提供的所有内容吗?

  • 我是否可以假设没有办法为视图控制器使用初始化程序注入,因此无法将它们的viewModel属性设为私有?

  • 在此设置中,如果我使用.Hierarchyor.Container范围会有所不同吗?

欢迎所有反馈。

0 投票
0 回答
375 浏览

ios - 通过 nib 实例化的 Swinject UIViewController 未被依赖注入

像这样的普通视图控制器:

因此注册了Swinject

然后以编程方式实例化:

在被添加到视图堆栈之前,从未someProperty注入过。

请问我做错了什么?谢谢你。