这是我第一次在swift中使用依赖注入,这就是我的工作方式,我有一个在appDelegate中初始化的数据管理器,然后传递给我的第一个视图控制器,然后每次它们被推到屏幕上时,都会传递给其他视图控制器:
if let navigationCtrl = window?.rootViewController as? UINavigationController {
if let firstViewController = navigationCtrl.topViewController as? FirstViewController {
firstViewController.dataManager = dataManager
}
}
现在这样做,一切都很好,但是当我去测试每个视图控制器时,我总是让dataManger为nil,我知道这是因为我首先给出的条件。所以,有没有办法确保topViewController始终具有dataManager变量,而不从另一个ViewController继承
最佳答案
其中之一正在发生:window
是nil
window?.rootViewController
不是UINavigationController
navigationCtrl.topViewController
不是FirstViewController
firstViewController.dataManager
是nil
这应该是一个简单的调试。放置一些断点和/或print
语句以了解问题所在。
提示:
确保在XCode/Interface Builder中正确设置视图控制器的类。
关于ios - Swift-单元测试中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50238840/