问题标签 [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.
swift - 将 SwInject 与中央观察者模式结合使用
我正在使用 SWInject 来维护我的应用程序中的依赖关系,并使用协调器模式来管理逻辑和依赖关系。
SWInject 可以与应用程序不同部分的多个观察者的集中式推送通知框架结合使用吗?
通常,我使用 Singleton 类来执行此操作,但这样做似乎违背了使用依赖注入模式的目的。
ios - 为什么 Swinject 模型类注册时没有“.inObjectScope(.Container)”产生单例?
这个问题适用于对Swinject for Swift有很多经验的人。
我将展示有问题的代码,我的问题在底部。
代码很多,抱歉。
这是MySwinjectStoryboard.swift
注册:
这是Stopwatch.swift
,它只是在触发 onComplete 处理程序之前暂停一段时间:
ImageService.swift
目前通过init
函数简单地接受信号和秒表属性:
SignalsService.swift
当前是一个空模型类:
虽然StartUpViewController.swift
是一个基本UIViewController
的,目前只接受其注入的属性:
finallygetPrivateKey()
只是一个全局静态,返回唯一的 Ints:
现在据我了解,我注册Stopwatch.swift
的MySwinjectStoryboard.swift
方式意味着每次注入一个实例时,它将是一个新的离散实例。但是,两者ImageService.swift
都StartUpViewController.swift
被注入了相同的实例:
ImageService
的关键应该是:
请问有人知道为什么会这样吗?谢谢你。
swift - 没有参数的 Swinject 服务类无法在 Swift 3.0 的 .container 范围内注册:为什么?
我创建了一个超级简单的协议:
和服务:
以及以下Swinject
注册工作:
但以下没有:
给出的错误是:
有趣的是,以下工作(即:可以在.container
范围内注册带有参数的服务):
我读过这个类似的问题,但没有帮助:Swinject - Ambiguous reference to member
谢谢大家。
ios - Swift 3.0 更新后,Swinject 中不同 ViewController 中的依赖注入不一致:为什么?
我正在注册一些Swinject
带有小号(.container)的单例服务:
将它们注入到一些视图控制器中:
然后这些视图控制器以两种不同的方式显示,SomeViewController
如下所示:
像这样AnotherViewController
:
SomeViewController
得到它的服务注入,但不幸AnotherViewController
的是没有。
这在升级到 Swift 3.0 之前曾经可以工作Swinject
,但现在不行。请问这是为什么,需要改变什么?
谢谢你。
更新
不幸的是,我既不熟悉Swinject
's 的底层代码库,也没有时间熟悉自己,但是通过挖掘表面下发生的事情,我发现了以下内容,希望这对任何可能比我更了解它的人有用:
成功的 VC DI:
失败的 VC DI:
补充说明:
失败的 VC 是 TabBarController 中的 UIViewController,两者都已在标准 XCode 故事板中布局。
swift3 - 用于 Swift 3.0.1 的 Swinject
目前Swinject/Swinject支持 swift 3.0。
什么时候支持 swift 3.0.1?
有人有什么想法吗?
ios - swinject - IOS - Swit - 显示位于 xib 文件中的视图控制器 = 崩溃
我将 swinject 与 swift 3 一起使用。我尝试在我当前的视图控制器上呈现,另一个视图控制器位于 .xib 文件中。
如果我在没有 swinject 的项目中这样做,它就可以工作。在我的项目中,使用 swinject 它会崩溃:libc++abi.dylib: 以 NSException 类型的未捕获异常终止
这是我用来定义视图控制器的代码:
这是我尝试在当前 viewController 上呈现 testViewController 的方式(例如,在按钮上单击 IBAction):
我尝试了不同的解决方案但没有成功。我无法删除 swinject (这个选择不是我的),我相信这是一个好主意,即使我并不容易使用它。我需要使用 .xib 文件,因为我有很多视图控制器,可以在不同的步骤中呈现。
谢谢你的帮助。奥利维尔
ios - 没有故事板的 Swift/Swinject
我正在使用没有情节提要的 Swinject 开始一个新的 Swift 项目。将 ViewController 注入其他 ViewController 以执行 Segue 的模式是什么?
- 如果将子 ViewController 注入到父 ViewController 中,当您转到父 ViewController 并返回父 ViewController 时,子 ViewController 是否始终是同一个实例?我想每次都创建一个新的。
- 如果您将一个子 ViewController 注入到父级中,那会不会导致该子 ViewController 的子 ViewControllers 也被注入,这意味着您将在加载根 ViewController 时将整个应用程序加载到内存中?
还是我错过了什么?
ios - 使用 Swinject 将 ViewModel 条件注入 ViewController
我Swinject
用来注入依赖项,到目前为止它工作得很好。但是现在我有一个场景,其中我有ViewController
一个依赖于它的ViewModel
. ViewModel
符合ViewModeling
协议并且可以是两种类型之一(两者都符合相同的协议,但具有截然不同的行为)。
我试图弄清楚如何注入正确的ViewModel
(必须在运行时做出的决定)?
我注意到我可以使用Container
来注册每个ViewModel
byname
然后使用name
来区分ViewModel
应该注入哪些,这起初似乎是一个很好的解决方案 - 直到我发现我无法ViewController
用名称实例化我错过了吗?)
我还考虑过在我的DependencyInjector
类上公开一个属性,该属性将用于手动注入权限ViewModel
- 尽管我觉得这种方法完全错过了拥有自动依赖注入解决方案的要点,并且还迫使我弄脏依赖注入器带有一些业务逻辑代码。
任何帮助或想法将不胜感激。
ios - Swinject注册UIViewController最佳实践
此时在我的项目中,我使用 Swinject(DI 容器)。
如果我有以下层次结构,我想知道如何注册 ViewController:
他们将如何注册和使用?在项目的这一点上,我有两个选项我使用第一个选项,但有一种感觉我们应该使用第二个:)
如果您解释为什么使用一种或另一种方法,我会很高兴。
感谢您的回复