問題タブ [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 投票する
2 に答える
97 参照

swift - 関連付けられた型を制約する

問題を示す私のコードの簡略版:

StringToIntコンパイラがそれに到達して検証できずInput、実際におよびそれぞれOutputに準拠することができないため、エラーが発生すると推測しています。InputTypeOutputType

私にとって、これを解決する最善の方法は、関連する型をプロトコルで直接制約することです。それはより表現力があり、コンパイラーはより多くの情報を持っています。しかし、ただやるだけではうまくいきtypealias Input: InputTypeません。

関連付けられた型を制約する方法はありますか?

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

swift - Swift の「抽象クラス」のようなプロトコル拡張を使用してメソッド内の静的変数にアクセスする方法

ここで提案されているプロトコルと拡張機能を使用して、 Swiftで抽象的なスーパークラスのような動作を作成しようとしてい ます。たとえば、抽象形状クラスの周囲を取得したい場合:

Swift は、calcPerimeter メソッドで static var numSides を使用することを望んでいません。インスタンス変数にすればコードが実行されることはわかっていますが、これは正しい方法ではないようです。これを行う最善の方法は何ですか?

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

swift - Swift で NSError からカスタム エラーへの暗黙的な変換を設定することは可能ですか?

NSHipsterから以下を読むと、 NSErrorについて疑問に思い、NSError がカスタム エラー タイプに暗黙的に変換されるように何かを設定できるかどうか疑問に思いました。

私は以下を作成しました:

この

ただし、暗黙的な変換が発生するものは何もありません。

そのような機能が C++ に存在し、1 つの引数のコンストラクターがあることは知っています。プロトコルなどを使用してSwiftでそのようなものを利用できるものはありますか?

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

swift - Swift - 関連付けられた型を制約するときのコンパイル エラー

したがって、エラーを再現するために多くのコードを記述する必要はありません。この場合、ジェネリックを使用する必要があるかもしれませんが、私のソリューションは機能するはずです。したがって、次のコード ブロックでは、「タイプ DCServiceClient がプロトコル DMServiceClient に準拠していません」というメッセージが表示されます。

ただし、関連する型 (エンドポイント) の制約を削除すると、問題なくコンパイルされます。DCServiceEndpoint は制約 (DMServiceEndpoint) に準拠しているため、コンパイルする必要があるようです。ここで何が欠けているかについてのアイデアはありますか? みんなありがとう!

0 投票する
3 に答える
1693 参照

swift - Swiftプロトコルから `[Self]` を返す方法は?

私は次のようにプロトコルを実装しています。

私はMethod - 1このような対応する実装で成功しています:

しかし、私はこのように実装できませんでしたMethod - 2:

そこで、次のようなエラーが発生します。

(それ自体のクラス)の配列形式 を返すための助けがあればいいでしょう。Self

0 投票する
3 に答える
321 参照

swift - typealias を持つプロトコルは型 AnyObject に準拠できませんか?

データを NSUserDefaults に保存する一般的な方法を書き込もうとしています。私が直面している問題は、タイプをNSUserDefaults.standardUserDefaults().setValue(value, forKey: key)取り込んでAnyObject?、プロトコルでタイプを設定するとString、 、 などはオブジェクトではないため、 にBoolマップされないことです。AnyObject?とにかく、各タイプの拡張機能を実装することなく、このコードを機能させるにはどうすればよいでしょうか? 手伝ってくれてありがとう!

編集 1

実装

使用事例

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

swift - Swift: パブリック クラスを実装し、パブリック プロトコルに準拠するプライベート型を返すことはできますか?

Objective-C では、関数は、パブリック クラスとパブリック プロトコルを実装するプライベート型のインスタンスを、そのプロトコルに準拠するパブリック クラスを定義しなくても返すことができます。

たとえば、次のヘッダー ファイルがあるとします。

そして、この実装ファイル:

Birdこの例では、私のコードのコンシューマーは、クラスまたはクラス (または を実装して準拠するBat他の型)について実際には決して知りませんが、返されるオブジェクトが と の両方を実行できることを確認できます。AnimalFlyerrandomFlyingAnimaleatfly

そのようなことはSwiftで可能ですか?