2014-11-24 202 views
2

我想寫一個返回泛型數組的swift方法。我省略了一些細節,但一直未爲清楚工作的重要位...類型約束的Swift泛型數組

protocol AProtocol { 
    func doSomething() 
} 

func decode<T: AProtocol>(jsonArray: Array<AnyObject>?) -> [T: AProtocol] { 
    //... 
    var resultArray = [T: AProtocol]() 
    resultArray.append 
    //... 
} 

當我指定數組包含類型T:AProtocol,然後append方法不再出現

[T:AProtocol]不具有構件追加

回答

3

在這行代碼:

var resultArray = [T: AProtocol]() 

要創建具有T類型和AProtocol類型的值的關鍵字的詞典。

要創建的AProtocol數組,只需使用:

var resultArray = [AProtocol]() 

否則,如果你想要的T數組:

var resultArray = [T]() 

注意的T實施AProtocol協議約束的設置函數聲明,因此在函數體中使用T時不必再次重複。

+0

LOL ....當然!....謝謝,什麼是基本錯誤。 – bandejapaisa 2014-11-24 11:48:30

1

[T: AProtocol]()命名不是數組,但字典。

+0

很酷,謝謝。很高興它是如此簡單。 – bandejapaisa 2014-11-24 11:48:57