2017-11-10 12 views
2

This is NOT a duplicate of In Swift, how can I declare a variable of a specific type that conforms to one or more protocols? . This question is about a specific use case where I needed a metatype and it was definitely not obvious how to do it.宣言メタタイプ4

スイフト4可能サブクラスであり、複数のプロトコルに準拠して変数宣言:私はこのような適合はなくするために必要

var myVariable: MyClass & MyProtocol & MySecondProtocol 

をそのインスタンス自体ではなく、そのインスタンス自体です。しかし、次の構文のために:

var classForCell: UICollectionViewCell.Type & AdditionalHeightable.Type 

私は、このエラーを与える:

Non-protocol, non-class type 'UICollectionViewCell.Type' cannot be used within a protocol-constrained type

は、どのように私はサブクラスであり、スウィフト4におけるプロトコルに準拠メタタイプを宣言することができますか?サブクラスであり、この構文を使用することができスウィフト4におけるプロトコルに準拠タイプ宣言する

答えて

5

var classForCell: (UICollectionViewCell & AdditionalHeightable).Type 
+0

を私は自分の質問に答えるんだけど、それはこれを見つけるために私に時間を要しました。これが誰かに役立つことを願っています。私はジェネリックスで遊んでいましたが、これも同様に表現することができますが、他の方法では制限されていました。 –

+0

あなたの質問に対するあなたの解決策であるにもかかわらず、正しい答えとしてマークしてください。 – Luzo

+0

このようなコードがコンパイルされていても、あまりにも驚いています!スウィフトコンパイラチームがここにあるかもしれません...;) –