2016-11-28 326 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()'確實起作用,這是一個小小的區別。 –