这是我第一次在swift中使用依赖注入,这就是我的工作方式,我有一个在appDelegate中初始化的数据管理器,然后传递给我的第一个视图控制器,然后每次它们被推到屏幕上时,都会传递给其他视图控制器:

  if let navigationCtrl = window?.rootViewController as? UINavigationController {

        if let firstViewController = navigationCtrl.topViewController as? FirstViewController {
            firstViewController.dataManager = dataManager
        }
    }

现在这样做,一切都很好,但是当我去测试每个视图控制器时,我总是让dataManger为nil,我知道这是因为我首先给出的条件。所以,有没有办法确保topViewController始终具有dataManager变量,而不从另一个ViewController继承

最佳答案

其中之一正在发生:
windownil
window?.rootViewController不是UINavigationController
navigationCtrl.topViewController不是FirstViewController
firstViewController.dataManagernil
这应该是一个简单的调试。放置一些断点和/或print语句以了解问题所在。
提示:
确保在XCode/Interface Builder中正确设置视图控制器的类。

关于ios - Swift-单元测试中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50238840/

10-11 11:32