問題タブ [protocol-extension]
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.
swift - 既存のクラスにプロトコル準拠を追加し、実装しているかどうかを確認しますか?
いくつかの既存のクラスを 1 つのカスタム プロトコルにグループ化して、それらを同じように扱えるようにしようとしています。たとえば、次のように、これら 2 つのクラスを 1 つのプロトコルでグループ化したいと思います。
これを行うと、どうしてこれができなくなりますか。
コンパイルされず、次のエラーが発生します。Variable binding in a condition requires an initializer
私はこれに正しく取り組んでいますか?アドバイスやヘルプをいただければ幸いです。
ios - UIApplicationDelegate プロトコルの拡張
UIApplicationDelegate
プロトコルを拡張し、メソッドのデフォルトの実装を提供したいと考えていますapplication(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
。ただし、私が提供したデフォルトの実装は呼び出されません。
UIApplicationDelegate
プロトコルを拡張することはまったく可能ですか(UIApplication
シングルトンであること、またはプロトコルメソッドがオプションであることに関連して)、または何か間違っていますか?
ありがとう
AppDelegate.swift:
objective-c - Objective-Cで拡張されたSwiftプロトコルを使用するには?
Objective-C クラスで Swift を使用しようとしていますが、構文に問題があるか、可能であるとしても問題があります。以下は私が試しているものです。
迅速:
目的 C:
Objective-C ViewController を動作させるにはどうすればよいですか? Swiftでどのように機能するかの例があります。助けてくれてありがとう。
swift - Swift: ジェネリック要素でシーケンスを拡張する
Swift では、特定のタイプの要素を含むシーケンスを拡張できます。たとえば、次のようになります。
これはいいです。Rect<Float>
ただし、 Rect 自体がジェネリック型 (など)の場合、どうすれば同じことができRect<Double>
ますか? 私は試した
しかし、コンパイラは「宣言されていない型 T」について不平を言います。どこに入れたらいいのかさっぱりわかりません。現在、すべての浮動小数点型に特化する必要があります。
swift - Self が UIViewController であるプロトコル拡張で関数を変更する
Swiftアプリケーションでネストされたビュー間でセグエを実行するために、単純なStringStack
形式の命名規則と並行して使用するプロトコルと対応する拡張機能を作成しました。"<origin>@<destination>"
私はSwiftが初めてなので、基本的に複数のビューで進むボタンと戻るボタンを実装するより良い方法があれば、それを受け入れます。ただし、以下に詳述する理由により、次のコードには問題があります。
私の最初の問題は、変更機能がプロトコル拡張で許可されていないことです。詳細については、このバグ レポートを参照してください。そのレポートには提案された回避策がありますが、次の結果はエラーであると主張してい'SegueForwardAndBackward' is not a subtype of 'UIViewController'
ます。
別の質問SegueForwardAndBackward
で詳しく説明されているように、クラスプロトコルを作成できる潜在的な解決策に出くわしました。ただし、クラス プロトコルを実装すると segfault が発生します。これは、拡張機能を と宣言しているためと思われますが、残念ながらこれを解決する方法がわかりません。where Self: UIViewController
現時点では、Swift のさらに別のバグのように見えるものに非常に不満を感じているため、アプローチを作り直すか、これらのエラーを解読するための助けをいただければ幸いです。
ご回答ありがとうございます。
swift - プロトコル拡張でデリゲートを設定する方法
同じ種類のセルを表示する複数のビュー コントローラーがあります。次のようなプロトコル拡張でデリゲートを設定したい:
がdidSelectItemAtIndexPath
実装さProductsViewController
れると呼び出されます。私が見逃したものはありますか、それともこれは間違ったアプローチですか?
swift - 複数のプロトコル拡張におけるあいまいな機能?
同じ関数名を持つ複数のプロトコルがあります。一部のプロトコルには型が関連付けられており、非ジェネリック プロトコルの場合のように関数を呼び出す方法がわかりません。エラーが発生します:Protocol 'MyProtocol1' can only be used as a generic contraint because it has Self or associated type requirements
これが私がやろうとしていることです:
汎用プロトコル拡張から関数を具体的に呼び出すにはどうすればよいですか?
swift - 既存のプロトコルを拡張して、デフォルトの実装で別のプロトコルを実装する
拡張機能を使用して、別のプロトコルにプロトコル準拠を追加することはできますか?
たとえば、A が B に準拠するようにします。
タイプ A のオブジェクトに B のデフォルトの実装 (準拠) を与えたい
動機は、独自の「ブリッジ」を作成せずに B が必要な場合に A のオブジェクトを再利用することです。
補足として、クラスを拡張してプロトコルを実装できます
プロトコルはデフォルトの実装を提供できます