这不是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中的协议?
答案 0 :(得分:18)
要声明作为子类的类型并符合Swift 4中的协议,您可以使用以下语法:
var classForCell: (UICollectionViewCell & AdditionalHeightable).Type