Swift 3.0协议实例化
问题描述:
这里是我对一系列命令类的声明。Swift 3.0协议实例化
var commands: [IPICommand.Type] = [CLoginCommand.self]
IPICommand
是一个协议,并且CLoginCommand
是实现协议的类。在数组中,现在我只有一个元素,但可以有更多元素。
在此之后,我想实例化数组的元素之一:
let aCommand = commands[0]()
目前的实例有问题:无法调用非功能型“IPICommand.Type”
答
你的价值试图实例化一个IPICommand
类型,这是一个协议。 要使它工作,在您的协议声明
protocol IPICommand {
init()
}
定义init
方法通过这种方式,你可以做commands[0]()
。 我宁愿以另一种方式命名init,但这取决于你。
你说得对。 'commands [0]()'不起作用,但'commands [0] .init()'确实起作用,这是一个小小的区别。 –