に準拠するオブジェクトのArray
がある場合は私の質問。配列の各メンバーのメソッドを呼び出す配列を繰り返し処理したい。しかし、私が呼びたいメソッドは静的でジェネリックを使用しています。私はこれを行うには、配列内の要素のクラスを取得する必要があります。あなたはどのようにそのオブジェクトのクラスを取得しますか?出来ますか?ジェネリックスを使用する関数で使用するプロトコルに準拠するクラスまたは構造体を取得します
私はSwiftに汎用関数のライブラリを書いています。
私は機能として有しているDBAble
プロトコルと呼ばれています:
static func get<T: DBable >(id:Int) -> T?
私はDBAbleに準拠してオブジェクトの配列を持っている:
let objs:[DBAble] = []
私は、配列を反復処理し、呼び出したいです:
for obj in objs {
obj.get(id: anInt)
}
しかし、このメッセージが表示されます:
静的メンバは、「取得」タイプ「DBable.Protocol」
のインスタンスで使用することはできませんクラス(または構造体の型)を見つける方法はありますに準拠したオブジェクトのプロトコル?私ができることを理解しています:
if obj is User {
}
これは私が探している解決策ではありません。
あなたの編集は、あなたのforループで呼び出されたときに 'get(_ :)'が返すと期待していることを明確にしていません。あなたは 'T == obj.dynamicType'を期待していますか? – Hamish