Neu schnell, ich habe versucht, ein Service-Registry zu erstellen:Gibt es eine bessere Möglichkeit, die Abhängigkeitsinjektion in Swift durchzuführen?
class ServiceRegistry {
static var instance = ServiceRegistry()
private var registry = [String:AnyObject]()
private init(){}
func register<T>(key:T, value:AnyObject) {
self.registry["\(T.self)"] = value
}
func get<T>(_:T) -> AnyObject? {
return registry["\(T.self)"]
}
}
aber nicht super freundlich:
Register:
ServiceRegistry.instance.register(CacheServiceProtocol.self, value:ImageCacheService())
Abrufen:
if let cache = ServiceRegistry.instance.get(CacheServiceProtocol) as? CacheServiceProtocol { ... }
Irgendein besserer Weg? Es wäre nützlich, um loszuwerden, die as? CacheServiceProtocol
im if let ...
Dieser Blogbeitrag über Swinject könnte auch hilfreich sein: https://yoichitgy.github.io/post/dependency-injection-framework-for-swift-introduction-to-swinject/ –