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