私はこの問題について洞察しています。私は特定のプロトコルに準拠する任意の型を受け入れるSwiftでジェネリック関数を作成しようとしています。しかし、このメソッドに準拠型を渡すと、そのクラスが準拠していないというコンパイラエラーが発生します。ここでプロトコルの適合性が汎用機能で認識されない
は私のプロトコルです:
protocol SettableTitle {
static func objectWithTitle(title: String)
}
そして、ここでは、このプロトコルに準拠して、私が作ったクラスです:
class Foo: SettableTitle {
static func objectWithTitle(title: String) {
// Implementation
}
}
は最後に、ここでは異なるクラスに住んでいる私の一般的な機能です:
class SomeClass {
static func dynamicMethod<T: SettableTitle>(type: T, title: String) {
T.objectWithTitle(title: title)
}
}
ここで、このようなメソッドを呼び出すと:
SomeClass.dynamicMethod(type: Foo.self, title: "Title string!")
私は、次のコンパイラエラーを取得する:error: argument type 'Foo.Type' does not conform to expected type 'SettableTitle' SomeClass.dynamicMethod(type: Foo.self, title: "Title string!")
クラスFoo
を宣言し、SettableTitle
適合性を実装したときに、これが起こる理由を私は理解できません。
これはXcode 8.3(最新の非ベータ版)の簡単な遊び場です。誰も私がここで間違っている何かを見ることができますか?
これはトリックをしました!ジェネリックスの章をもう一度読まなければならないと思います。ありがとう! – Drew