नई स्विफ्ट के लिए, मैं एक सेवा रजिस्ट्री बनाने के लिए कोशिश कर रहा था:क्या स्विफ्ट में निर्भरता इंजेक्शन करने का कोई बेहतर तरीका है?
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)"]
}
}
लेकिन सुपर अनुकूल नहीं है:
रजिस्टर:
ServiceRegistry.instance.register(CacheServiceProtocol.self, value:ImageCacheService())
प्राप्त करें:
if let cache = ServiceRegistry.instance.get(CacheServiceProtocol) as? CacheServiceProtocol { ... }
कोई बेहतर तरीका? if let ...
स्विंगजेक्ट के बारे में यह ब्लॉग पोस्ट भी सहायक हो सकता है: https://yoichitgy.github.io/post/dependency-injection-framework-for-swift-introduction-to-swinject/ –