声明作为子类的metatype并符合Swift 4中的协议

时间:2017-11-10 20:46:18

标签: swift swift4

  

这不是In Swift, how can I declare a variable of a specific type that conforms to one or more protocols?的副本。这个问题是关于一个特定的用例,我需要一个元型,并且如何做到这一点绝对不明显。

Swift 4允许声明一个变量,它是一个子类并符合多个协议:

var myVariable: MyClass & MyProtocol & MySecondProtocol

我需要这样的一致性但不是针对实例而是针对类型本身。但是对于以下语法:

var classForCell: UICollectionViewCell.Type & AdditionalHeightable.Type

给了我这个错误:

  

非协议,非类型类型'UICollectionViewCell.Type'不能在协议约束类型中使用

如何声明作为子类的元类型并符合Swift 4中的协议?

1 个答案:

答案 0 :(得分:18)

要声明作为子类的类型并符合Swift 4中的协议,您可以使用以下语法:

var classForCell: (UICollectionViewCell & AdditionalHeightable).Type