Swift 3.0协议实例化
Swift 3.0 Protocol instantiation
这是我对命令数组的声明 classes.
var commands: [IPICommand.Type] = [CLoginCommand.self]
IPICommand
是协议,CLoginCommand
是实现协议的 class。现在数组中只有一个元素,但可以有更多。
在此之后我想实例化数组的元素之一:
let aCommand = commands[0]()
当前实例化有问题:无法调用非函数类型的值'IPICommand.Type'
您正在尝试实例化一个 IPICommand
类型,这是一个协议。
为了让它工作,在你的协议声明
中定义一个init
方法
protocol IPICommand {
init()
}
这样你就可以做到commands[0]()
。
我更喜欢用另一种方式命名 init,但这取决于你。
这是我对命令数组的声明 classes.
var commands: [IPICommand.Type] = [CLoginCommand.self]
IPICommand
是协议,CLoginCommand
是实现协议的 class。现在数组中只有一个元素,但可以有更多。
在此之后我想实例化数组的元素之一:
let aCommand = commands[0]()
当前实例化有问题:无法调用非函数类型的值'IPICommand.Type'
您正在尝试实例化一个 IPICommand
类型,这是一个协议。
为了让它工作,在你的协议声明
init
方法
protocol IPICommand {
init()
}
这样你就可以做到commands[0]()
。
我更喜欢用另一种方式命名 init,但这取决于你。