問題タブ [swift-protocols]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
472 参照

ios - テンプレート/ジェネリック Swift イニシャライザー/コンストラクターの何が問題になっていますか?

3 つのパラメーターを受け取るイニシャライザーが必要な SlidingNavigationController を作成しました。3 つのパラメーターはすべて UIViewControllers である必要がありますが、SlidingIconProtocol に確認する必要があります。だから私はこのようなコードを書きました(簡略化されたバージョン):

問題は、Swift がコードの最後の行でコンパイルに失敗することです。

Swift/Xcode の補完でさえ、このイニシャライザを使用するオプションを提供しているため、これが機能しない理由がわかりません。そして、渡されたすべてのパラメーターは、SlidingIconProtocol に確認されます。

コードのどこが間違っているのか、Swiftで同じことを達成する正しい方法は何ですか(まったく可能ですか)?

0 投票する
2 に答える
62 参照

swift - プロトコル型のプロパティを宣言するプロトコルを作成するには?

Swift でプロトコルと拡張機能を活用しようとしていますが、理解できないコンパイル エラーが発生します。

次のような Shape を定義する 2 つのプロトコルを宣言するとします。

これを実装するために、1 つは Square 用、もう 1 つはソリッド フィル用の 2 つの構造体を定義します。このような:

「タイプ 'Square' はプロトコル 'Shape' に準拠していません」というコンパイル エラーが表示されます。var fill : Fillコンパイルエラーのように塗りつぶしのタイプを強制的に塗りつぶすと、消えます。プロトコルで許可されているものよりも具体的なタイプを Square で指定できないのはなぜですか?

この特定の例では、塗りつぶしに Enum を使用するか、何か他のものを作り直すことで、このパターンを使用しないように変更できることに気付きました。fill をプロトコルに準拠した型にすることができない理由を知りたいだけです。

0 投票する
1 に答える
161 参照

swift - プロトコル拡張タイプの Self が初期化子のタイプと一致しません

学術的な目的のために、私は次のような表現を好むとしましょう

ストックというより

さまざまな Swift 整数型のすべてがIntegerTypeプロトコルに準拠していて、これらの int 型のすべての種類に適合する初期化子があるように思われるため、Double()次のようなことができると思いました。

これは動作しません。そして、私はその理由を知りたいですか?それを機能させる魔法があるかどうか知りたいですか?たぶんwhere?それともselfリファレンスと関係がありますか?

これで試したプレイグラウンドのコンソールに表示されるエラーは次のとおりです。

0 投票する
1 に答える
363 参照

swift - プロトコル メソッドが別のビュー コントローラーで実行されない

私はこれですべてのView Controllerをサブクラス化するために使用しているrootviewcontrollerを持っています.View Controllerを実行しようとしているメソッドを持つプロトコルがそのように設定されています.

ルート ビュー コントローラー

だから私はデリゲート関数を起動すると思われる私のView Controllerの1つにIBActionを持つボタンを持っています。

関数を起動するView Controller

したがって、このView Controllerでは、viewdidAppearでデリゲートを設定し、関数を呼び出して、テスト目的で何かを印刷しましたが、何も起こりません。

関数を実行するView Controller

しかし、何も起こっていないようです...デバッグしても、関数も実行されません

0 投票する
2 に答える
640 参照

swift - Swift: 汎用プロトコル

構造体に依存する戻り値の型が異なるだけの同じメソッド名を持つ個々の拡張機能でプロトコル準拠が生成されるいくつかの迅速な構造体があります。それに加えて、ジェネリック型のプロトコル準拠関数を呼び出すジェネリック関数でそれらを使用したい)。//: 遊び場 - 名詞: 人が遊べる場所

残念ながら、次のエラーが発生します: /var/folders/sn/78_zvfd15d74dzn01mdv258h0000gq/T/./lldb/3741/playground6.swift:7 :17: 注: プロトコルにはタイプ ' () -> T の関数 'createMe()' が必要です' (別名 '<τ_1_0> () -> τ_1_0') static func createMe()->T;

ここで正確に準拠していないものは何ですか?回避策はありますか?

0 投票する
2 に答える
544 参照

swift - Swift2 プロトコル拡張 NSObjectProtocol

私が望むのは、一部の NSObjectProtocol が一部のプロトコルに準拠するためのデリゲートメソッドを自動実装することですが、私は一生懸命努力しますが、それを成し遂げることはできません。

デモは下にあります

より正確な更新

================================================== =======================

PagedLoadablecollectionView が必要とする情報を取得するためのプロトコルを 1 つ取得し、次にextension NSObjectProtocol where Self: Delegatable、オブジェクト実装の自動構成を取得しましたPagedLoadable