2014-11-24 135 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