私はSwift 3を使用しています。私のバックエンドは、様々な方法で応答をページングするさまざまなコンテンツタイプに対して、いくつかの異なるエンドポイントを持っています。すべてのコンテンツタイプに対して実装できる汎用プロトコルを作成しようとしています。そのプロトコルに準拠したクラスの宣言でプロトコル関数の戻り値型を指定する
protocol DynamicContentFetcher {
func content() -> MutableObservableArray<Any>
func getNext()
func refresh()
}
これらのインスタンスの1つはAdSearchです。
class AdSearch: DynamicContentFetcher {
var results = MutableObservableArray<DynamicAd>([])
func content() -> MutableObservableArray<Any> {
return results
}
return
ことは理にかなってエラーCannot convert return expression of type MutableObservableArray<DynamicAd> to return type 'MutableObservableArray<Any>
、とコンパイルされません。私はAdSearch<DynamicAd>
ようDynamicContentFetcher
に準拠した私のクラスを初期化し、プロトコルにfunc content() -> MutableObservableArray<#Specified Type#>
を行うには> <にその値を使用することができればいいだろう何
でした。これはSwiftでも可能ですか?
MutableObservableArray
は、反応性プログラミングポッドであるBondフレームワークのクラスです。
ジェネリックスはSwiftでは共変ではありません。それはエラーの原因です: 'MOA'は 'MOA 'のサブタイプではありません。型パラメータを明示的にします(dfriの答えに示されているように)。 (悪いタイトルを選んだ、それはあなたの質問については何も教えてくれません) –
Raphael
@Raphaelタイトルは申し訳ありません、英語は私の母国語ではなく、私が達成しようとしていたことを説明するのは難しかったです。 –