包含 0.3.4

Contain 0.3.4

Axel Ancona Esselmann 维护。



Contain 0.3.4

  • anconaesselmann

Contain

Contain 是一个为 IOS 项目设计的轻量级依赖注入框架。它是用 swift 编写的。

安装

Contain 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'Contain'

如何使用 Contain

在 AppDelegate 中创建一个容器实例

import UIKit
import Contain

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var container: ContainerProtocol?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        container = Container(appDelegate: self)
        return true
    }
}

在没有故事板的情况下,将容器注入到根视图控制器中并将其传递出去。

在处理故事板时,从应用程序的第一个屏幕中的 AppDelegate 访问容器并传递它

guard let container = (UIApplication.shared.delegate as? AppDelegate)?.container else {
    return
}

要创建新的依赖项,在 Consumers.swift 中添加一个消费者

protocol MyClassConsumer: class {
    var myClass: MyClass? { get set }
}

MyClass 需要从 BaseInjectable 继承或者遵循 Injectable 协议。注意:遵循 Injectable 时,确保遵循 BaseInjectable 中使用的构造器模式。

依赖项的任何消费者只需要从 BaseInjectable 继承或者遵循 Injectable 协议,并且遵循期望的 Consumer 协议。

《MyClassConsumer》示例

class MyClass: BaseInjectable {

}

class MyViewModel: BaseInjectable, MyClassConsumer {
    var myClass: MyClass?
}

MyViewModel现在可以使用容器注入,myClass将分配到MyViewModel的初始化器中。

如果容器被注入到视图控制器的初始化器中,视图模型可以按以下方式初始化

lazy var viewModel: { MyViewModel(container: container) }()

作者

anconaesselmann, [email protected]

许可

Contain可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。