问题标签 [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.
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。
swift - 解析符合协议的类和对象
我想传递一个符合某些协议的对象,并使用Swinject 框架(通过依赖注入)解析其分配类型。
错误:无法使用类型为“(Any.Type)”的参数列表调用“解决”
如何从确认协议的对象中获取类,也许除了反射还有另一种选择?
ios - Swinject:迁移到程序集
我在我的项目中为 DI 使用了很棒的Swinject,但我在没有程序集的情况下使用它(当我开始使用 Swinject 时,还没有程序集)。
我目前的使用模式Containers
是:
使用该配置:
- 容器只要它们需要存活就可以存活(唯一持有对它们的引用的实体 - VC,可以使用依赖项)
- 我可以停止使用/切换 DI 框架,
Container
甚至用手动构建替换(我的代码不知道任何框架),因为我的代码调用:let topController = ParentContainer().myTopLevelController()
现在我正在尝试申请Assembly
。据我所知,我的容器现在将符合AssemblyType
协议。但我有一些困惑:
- 我应该通过组装而不是通过容器来解决实例吗?
- 方法的目的是
func loaded(resolver: ResolverType)
什么?我应该保留解析器吗?它会导致保留周期吗? - 我想要 TopLevelAssembly,但仍将容器用于叶实体。是否可以将 Assembly 作为容器的父级传递?或者还有其他方法可以实现吗?
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 版
swift - Swinject 测试解决服务
我正在寻找一种方法来测试服务是否已在 .Container 范围内解决。我的应用程序在启动时启动了一些“服务”,我想确保这些服务已经得到解决,而不会触发它们被解决。
swift - 在这种情况下注入工厂是否有意义(Swinject)
什么是正确(最干净和最简洁)的方式PetOwner
,可以在程序的任何后期创建新的实例Cat
?
假设它可以在响应某些异步请求后createAnotherAnimal
自行调用,因此在创建时创建所需的尽可能多的实例是不可能的。PetOwner
Cat
PetOwner
我解决了注入工厂的问题,但我不相信这是解决问题的最佳方法,Swinject 中有哪些替代方案?
realm - 结合 Swinject 和 Realm
感谢那个框架。我真的很喜欢这个想法,我渴望使用它!但是,我目前正在尝试使用一个使用领域的应用程序来启动和运行它。我最初认为,创建一个 realmService 可能是个好主意,我将它注入到我的模型中并处理所有领域的写入内容。
可悲的是,我无法决定如何正确地做到这一点。Wether App 示例很棒,但它没有涵盖任何领域模型。有什么提示可以指出我正确的方向吗?我尝试通过构造函数和属性,但我无法让它工作。我想,我错过了一些概念性的东西。
谢谢,我很想向你学习:)
干杯
ios - 使用 Swinject 时如何将参数传递给 resolve 方法?
我有一个测试项目,我试图将参数传递给Swinject项目中的 resolve 方法。
这是我的 Swinject 故事板扩展文件中包含的示例。
在我的 ViewController 中,我正在尝试执行以下操作来解决 GetMessageAction
当我的 getMessage 函数运行时,我收到以下消息
致命错误:在展开可选值时意外发现 nil
ios - Swinject:MVVM 和情节提要设置
这是我使用Swinject的第一个项目,我想确保正确使用它。
来自 C++/Objective-C 背景,我对依赖注入容器没有太多经验。
我遵循 MVVM 架构,使用SwinjectStoryboard
并让故事板为我实例化所有视图控制器。
这是我的设置:
几个问题:
可以使用
defaultContainer
情节提要提供的所有内容吗?我是否可以假设没有办法为视图控制器使用初始化程序注入,因此无法将它们的
viewModel
属性设为私有?在此设置中,如果我使用
.Hierarchy
or.Container
范围会有所不同吗?
欢迎所有反馈。