通过初始化器注入依赖项(使用故事板)? [Swift]

Inject dependencies through initializers (using Storyboards)? [Swift]

我想知道是否有一种方法可以不显式地通过 setter 传递依赖对象。即 setter 依赖关系:

var store: Store!

这能否通过 VC 的初始化程序 (instantiateViewControllerWithIdentifier) 以某种方式完成,即使用故事板进行初始化程序注入? 谢谢

您可以引入一个额外的 class,负责配置您的 viewController。

class MyViewControllerConfigurator {

    static func configure(viewController: MyViewController) {

        let someDependency = SomeDependency()

        viewController.someDependency = someDependency

        // force trigger lazy initialization of view (and subviews), which would be nil otherwize in awaikFromNib
        _ = viewController.view

        // do further configuration here (add child view controller, set delegates ...)
    }
}

MyViewController中的用法:

class MyViewController: UIViewController {

    override func awakeFromNib() {
        super.awakeFromNib()
        MyViewControllerConfigurator.configure(viewController: self)
    }
}

这样,即使在使用 Storyboard 实例化时,您的 viewController 也会得到配置。