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

Mar*_*rný 10 swift swift4

这不是In Swift的副本,我如何声明符合一个或多个协议的特定类型的变量?.这个问题是关于一个特定的用例,我需要一个元类型,并且如何做到这一点绝对不明显.

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

var myVariable: MyClass & MyProtocol & MySecondProtocol
Run Code Online (Sandbox Code Playgroud)

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

var classForCell: UICollectionViewCell.Type & AdditionalHeightable.Type
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

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

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

Mar*_*rný 19

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

var classForCell: (UICollectionViewCell & AdditionalHeightable).Type
Run Code Online (Sandbox Code Playgroud)