Swift将AnyObject转换为协议并赋值属性

时间:2015-08-20 08:50:52

标签: ios swift dependency-injection

我正在尝试使用外部注入器解决Swift中的依赖关系:

class DependencyInjector {
    var networkManager:NetworkQueueManager

    protocol InjectorDelegateNetworkQueue{
        var networkManager:NetworkQueueManager {get set}
    }

    func injectDependencies(object:AnyObject){
            if object is InjectorDelegateNetworkQueue{
                object.networkManager = networkManager
            }
    }
}

显然,由于AnyObject没有名为networkManager的属性,只有转换对象有一个属性,因此无法工作。 我的意思是通过调用

在其他类的init方法中调用此方法
DependencyInjector.sharedInstance().injectDependencies(self)

如何在Swift中使用它?

2 个答案:

答案 0 :(得分:0)

可能会像:

func injectDependencies(object:AnyObject){
        var thing:InjectorDelegateNetworkQueue? = object as? InjectorDelegateNetworkQueue
        if thing {
            thing.networkManager = networkManager
        }
}

答案 1 :(得分:0)

将你的功能改为此。

func injectDependencies(object:AnyObject){
        if object is InjectorDelegateNetworkQueue{
            (object as InjectorDelegateNetworkQueue).networkManager = networkManager
        }
}