私は迅速にジェネリックスを学んでいます。何が悪いのか分からない。一般スイフトIOSは "コードコンパイルエラーのサブタイプではありません
誰でも、別のテンプレートに汎用テンプレートを挿入する方法を教えてください。 BasePresenter
クラスの
宣言は、絵で以下のエラーで
class BasePresenter<VIEW : BaseView>{
コードのようになります。
つまり、あなたのクラス宣言、あなたが紹介しているように見えるタイプでは、私は迅速にジェネリックスを学んでいます。何が悪いのか分からない。一般スイフトIOSは "コードコンパイルエラーのサブタイプではありません
誰でも、別のテンプレートに汎用テンプレートを挿入する方法を教えてください。 BasePresenter
クラスの
宣言は、絵で以下のエラーで
class BasePresenter<VIEW : BaseView>{
コードのようになります。
つまり、あなたのクラス宣言、あなたが紹介しているように見えるタイプでは、、PRESENTER 、望ましくない。私は確信していませんが、コンパイラがこの部分型宣言を許可していますが、後でこのような部分型を使用して変数を作成しようとするとエラーが発生します。今の回避策は、このタイプを避け、直接タイプBasePresenterであること、またはタイプエイリアスを使用してPRESENTERの種類を表すために、あなたのプレゼンターの変数を宣言することです:
class BaseViewController <VIEW: BaseView> : UIViewController, BaseView{
typealias PRESENTER = BasePresenter<VIEW>!
var presenter : PRESENTER!
//Rest of the class body...
}
答えをありがとう。しかし、 'BaseViewController'の継承者は' var presenter'変数に 'BasePresenter'のinheritorのインスタンスを持たなければなりません。私はそれをどのようにすることができますか? –
なぜそれをしたいですか?発表者には、BasePresenterのサブタイプを割り当てることができます。 – Shripada
@Shripadaしたがって、その 'var 'を特定の' PRESENTER'実装として使用し、 'BasePresenter'を' BaseViewController'のサブクラスの 'PRESENTER'にキャストせずにメソッドを直接呼び出すことができます。 – shelll
はなぜとしてプレゼンターを宣言したlike-
何か配列?何か理由は?あなたはちょうどvarプレゼンター:プレゼンターが欲しいのように見えますか? – Shripada
@Shripada、返信いただきありがとうございます。はい、それは私の間違いです。それを単一のオブジェクトとして作った。しかし、問題 –
が解決しない場合は、正しいスクリーンショットで質問を更新できますか?スクリーンショットはまだ間違ったコードを示しています – Shripada