问题标签 [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 - Swinject:在工作区中使用多个模块(项目)时解析失败
我正在尝试使用 Swinject 为多模块工作区设置 DI。我有一个ParentProject
嵌入二进制框架的地方ChildProject
(因此ParentProject
包括来自 的所有公共代码ChildProject
)。
我的方法是为每个模块创建一个程序集,然后在 ParentProject 中将它们组合在一起。我得到的错误对我来说真的很奇怪,取一个NSPersistentContainer
:
Swinject: Resolution failed. Expected registration:
{ Service: NSPersistentContainer, Factory: Resolver -> NSPersistentContainer }
Available registrations:
{ Service: NSPersistentContainer, Factory: Resolver -> NSPersistentContainer, ObjectScope: container }
ParentProject 的装配示例:
public class ParentProjectAssembly: Assembly {
...
public func assemble(container: Container) {
...
container.register(NSPersistentContainer.self) { _ in
return self.persistentContainer
}.inObjectScope(.container)
...
}
}
如果我将这个注册码移到或者我在他们两个中都有这个注册并不重要ChildProjectAssembly
,错误总是一样的。我的汇编器只是Assembler([ParentProjectAssembly(), ChildProjectAssembly()]
在 ParentProject 的 AppDelegate 中(现在)。似乎一切正常,assemble(container:)
方法对所有程序集都有相同的容器,一些注入确实有效,但其他人有这个错误提示我应该在不指定 objectScope 的情况下注册服务?那是不可能的。
帮助
swift - 类型“SwinjectStoryboardOption”不符合协议“ServiceKeyOption”
在我对我的项目 Cocoapods 进行了全新安装之后,该项目在全新安装之前工作,现在当我编译时出现该错误:
我如何解决它?
swift - RxSwift:将实际可观察对象传递给另一个视图控制器?
我有一个视图控制器,它需要了解从另一个视图控制器设置的布尔变量 headerCollapsed。在vc1中我有:
以及将布尔值设置为 true 的函数:
然后,为了避免创建进一步的依赖关系并直接调用 vc1,我试图通过依赖注入和路由器将collapsedObservable而不是headerCollapsed一直传递到vc2。我试图简化这个问题,但实际上 vc1 和 vc2 之间有好几层。
但是发生的事情是,无论如何,在我的路由器类collapsedObservable 内部都是nil,并且我无法将其设置为默认值,以便稍后在我从vc2 内部调用它时进行更新。那么,像这样传递实际的 observable 是可能的吗?
ios - 如何解决依赖关系 swinject(没有情节提要),另一个重要的控制器在哪里作为 rootVC?
我的应用程序中没有情节提要。所以我所有的依赖项都在 App Delegate 中说明了。我阅读了 Swinject 的文档,并建议了该选项:
window.rootViewController = container.resolve(PersonViewController.self)
但在我的例子中,根控制器是标签栏控制器 ( MainTabBarController()
),它设置我的收藏视图和其他选项的布局。如何解决这个问题?
最初,我尝试通过 Swinject Storyboard 完成所有操作,但 storyboardInitCompleted() 对我不起作用,我viewModel: ViewModelProtocol!
仍然存在nil
(控制台中的解决方案失败)。
应用代表:
MainTabBar 控制器:
照片集合视图控制器:
ios - 我在 Swinject 中做错了什么?
每当我运行此代码时,都会调用 VCModel 的 init(),但 Swinject 不会将 VCModel 实例注入到我的 ViewController 中。有人可以告诉我我做错了什么吗?我得到的错误是:
在 ViewController viewModel.cellModels 中展开可选值时意外发现 nil
应用委托
视图控制器
ios - UIScrollView bar 插入标签栏和导航栏的大小
我正在使用 Chatto 库 ( https://github.com/badoo/Chatto ) 作为聊天窗口,并初始化从其 BaseChatViewController 继承的视图控制器。
我遇到的问题是,虽然滚动视图可以一直滚动到对话的顶部和底部,但滚动条停止的位置与顶部和选项卡上的导航栏大小相同底部的栏。
Chatto 演示应用似乎没有这个问题,所以我想知道在我的应用中是否应该做一些不同的事情。
这是视图控制器
ios - 当对象范围为容器时,多次调用 Swinject 工厂关闭
我正在尝试将 CoreDataStack 注册为具有对象范围的共享容器上的单个实例.container
,但是它的工厂关闭被多次调用,并且当我在 Xcode 中调试内存图时,即使返回的对象不是值,也会创建该对象的多个实例-类型!
Swinject 文档:
如果工厂闭包返回值类型,则忽略对象范围,因为根据 Swift 规范,它的实例从不共享。
这种奇怪行为的根本原因是什么?
ios - Swinject 返回 nil,因为对象注册错误
这就是我注册对象的方式FirebaseMessaging
:
然后我需要使用它:
但我收到一个错误:
Swinject:解析失败。预期注册:{ Service: FIRMessaging, Factory: Resolver -> FIRMessaging } 可用注册:{ Service: FIRMessaging, Factory: Resolver -> FIRMessaging, ObjectScope: graph } 致命错误:在展开可选值时意外发现 nil:文件 ToolsAssembly.swift ,第 72 行
为什么会发生?
ios - 使用依赖注入 (Swinject) 在 MVVM-C 中的 ViewModel 之间传递对象
我是新手,DependencyInjection
因此Swinject
我有疑问。
假设我们有一个PersonList
带有Person
对象列表的 ViewModel。我们选择其中一个Person
并将其传递给PersonDetails
它,PersonDetails(person:Person)
基本上我们Person
从第一个 ViewModel 中选择一个并将其传递给Person
将显示详细信息的第二个 ViewModel。
正如我所了解的那样,Swinject
我们将在编译时注入依赖项,例如
我的问题是我们在编译时没有信息来知道Person
将选择哪种类型,PersonList
所以我们如何在编译时注入正确选择Person
的内容PersonDetails
。