質問はSwift3を参照しています。私はそれから継承プロトコルと複数の種類がありNSObject <Protocol>にプロトコルをキャストして制約付き拡張インターフェイスにアクセスする方法は?
someObject as (Type & Protocol)
: は、バージョン4以来、あなたは、このようType<Protocol>
にオブジェクトを最後にキャストすることができます。そのプロトコルについて
A, B, C, D: CKEntity (pseudocode)
IオブジェクトはNSObjectのから継承する場合があります
拡張である:複数のケースのperferctly
extension CKEntity where Self : NSObject {
static func method() {
...
}
ワーク。
そして、私はCKEntityを実装するClass(Type)をとる関数を持っています。
NSObjectでもあればケースに合っているかどうかチェックする必要があります。 そうであれば、適切な関数を呼び出します。私が達成しようとしているものの
プロトタイプ:
func validateSync(ofType type: CKEntity.Type) {
let a = (type as NSObject.Type & CKEntity.Type).self
a.method() // Compilation error: Type 'Any' has no member 'method'
}
動作しません。
質問です:私は拡張機能の制約を満たすためにNSObject.Type(インスタンスではなく)にタイプ(Protocol.Type)をキャストするにはどうすればよい
?
シナリオ(要約):AはAをにキャストする必要B
かもしれB
あるA用
拡張:Bと制限されたA & Bインターフェイスに到達します。