Swift 依赖注入器。 兼容 Swift 服务器端和 iOS Swift。
要使用 CocoaPods 安装 DependencyInjector,请将以下行添加到您的 Podfile
。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
pod 'DependencyInjector'
Carthage 是一个去中心化的依赖管理器,它可以构建您的依赖项并为您提供二进制框架。
您可以使用 Homebrew 通过以下命令安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 DependencyInjector 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github 'Digipolitan/dependency-injector' ~> 2.0
运行 carthage update
以构建框架,并将构建的 DependencyInjector.framework
拖到您的 Xcode 项目中。
Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,它已集成到 swift
编译器中。
一旦您设置了 Swift 包,将 DependencyInjector 添加为依赖项就像将其添加到 Package.swift
的 dependencies
值一样简单。
dependencies: [
.package(url: "https://github.com/Digipolitan/dependency-injector.git", from: "2.0.0")
]
首先,您必须创建一个模块并注册一些提供者
let module = Module()
module.bind(IAnimal.self).to(Dog.self)
IAnimal 是一个协议,必须由 Dog 类实现
public protocol IAnimal {
var name: String { get }
func scream() -> String
}
open class Dog: IAnimal, Injectable {
public var name: String
public required convenience init(injector: Injector, arguments: [String : Any]?) throws {
self.init(name: arguments?["name"] as? String ?? "Athina")
}
init(name: String) {
self.name = name
}
public func scream() -> String {
return "Barking"
}
}
之后,您必须在注入器中注册您的模块
Injector.default.register(module: module)
最后,注入一个 IAnimal 并检索在您的模块中注册的具体类
if let animal = try? Injector.default.inject(IAnimal.self) {
print(animal.name) // print Athina
print(animal.scream()) // print Barking
}
注册一个处理参数的提供者
let module = Module()
module.bind(IAnimal.self).with { (_, arguments) -> IAnimal? in
if let name = arguments?["name"] as? String {
return Dog(name: name)
}
return nil
}
Injector.default.register(module: module)
使用参数 Dictionary<String, Any> 注入一个 IAnimal
if let animal = Injector.default.inject(IAnimal.self, arguments: ["name": "Athina"]) {
print(animal.name) // print Athina
print(animal.scream()) // print Barking
}
if let otherAnimal = Injector.default.inject(IAnimal.self, arguments: ["name": "Yoda"]) {
print(otherAnimal.name) // print Yoda
print(otherAnimal.scream()) // print Barking
}
有关更多详细信息,请参见 CONTRIBUTING.md!
该项目遵守 贡献者公约行为准则。 通过参与,您需要遵守此准则。 请向 contact@digipolitan.com 报告不可接受的行为。
DependencyInjector 在 BSD 3-Clause 许可证下获得许可。