2016-11-28 242 views
1

这里是我对一系列命令类的声明。Swift 3.0协议实例化

var commands: [IPICommand.Type] = [CLoginCommand.self] 

IPICommand是一个协议,并且CLoginCommand是实现协议的类。在数组中,现在我只有一个元素,但可以有更多元素。

在此之后,我想实例化数组的元素之一:

let aCommand = commands[0]() 

目前的实例有问题:无法调用非功能型“IPICommand.Type”

回答

1

你的价值试图实例化一个IPICommand类型,这是一个协议。 要使它工作,在您的协议声明

protocol IPICommand { 
    init() 
} 

定义init方法通过这种方式,你可以做commands[0]()。 我宁愿以另一种方式命名init,但这取决于你。

+0

你说得对。 'commands [0]()'不起作用,但'commands [0] .init()'确实起作用,这是一个小小的区别。 –