問題タブ [swift-extensions]

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 に答える
817 参照

swift - プロトコル拡張の型からデフォルトの静的変数に直接アクセスできますか?

Swift の楽しみとして、代わりに具体化された API をGCD. だから私はこれを遊び場に投げました:

しかし、これは最後の行でエラーを引き起こします:

これが何を言っているのかわかりません。つまり、私はそれを読みました。しかし、私は本当の問題を見ていません。Doubleのようなものの型変数をどのように持っているかを調べましたNaNが、同様の種類のアクセサーで別の型を拡張できない理由がわかりません。

(私は違いなしで別のものを試しましたtypealias

更新: @Kametrixom の回答はすぐには役に立ちませんでしたが、最終的にはおそらく貢献しました。電球が点灯するために私がしなければならなかったことは次のとおりです。

わかりました、それはうまくいきました。今は構造体です。

それもうまくいきました。拡張されたデフォルト実装を持つプロトコル:

ただし、プロトコルを使用してクラスまたは構造体を拡張します。

そして、それは機能します。私が犯していた間違い (だと思いますか?) は、Humble 型のファースト クラスのインスタンスが実行されていて、その動作が付加されていると想定したことでした。むしろ、構造体/クラス型に追加される動作の単なるテンプレートです。

質問のタイトルを変更しました。そして答えはノーです。

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

swift - 拡張機能のジェネリック パラメーターに制約を追加する

私はこの機能を持っています:

ご覧のとおり、[Key: Value?]辞書を辞書に変換し[Key: Value]ます (オプションなし)。

Dictionary値が任意の型のクラスに対してのみ新しいメソッドを使用してクラスを拡張したかったOptionalのですが、辞書の汎用パラメーターに制約を追加できません。

これは私が試したものです:

しかし、エラーで失敗します:

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

swift - 2 つの異なるモジュールで同じクラス拡張

私のプロジェクトには、NSDate の拡張機能を実装するフレームワークがあります。拡張子はこんな感じ。

このフレームワークをアプリ プロジェクトにインポートしました。同じ拡張子をコピーしてアプリの Swift ファイルに貼り付けると、アプリのコードの新しいコピーがフレームワークのコードのコピーを上書きするように見えます。

アプリでこの関数を呼び出すときに、名前空間を使用して必要な実装を指定する方法はありますか?

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

ios - Self.Type は、Swift の object-c クラスの拡張で AnyClass に直接変換できません

正しい nib 名で UIViewController を作成するファブリック メソッドを作成しようとしています (iOS8 のデフォルトの初期化子の問題を修正するため)。それを行うために、拡張機能を追加しました:

ただし、コンパイラは error: Cannot convert value of type 'Self.Type' to expected argument type 'AnyClass' (aka 'AnyObject.Type')in を発行しますNSStringFromClass(self)

これを修正するには、別の拡張メソッドを追加して、コードを次のように書き換えます。

ただし、最初のバリアントの問題を理解したいと思います。

私が理解しているように、メソッドを返すSelfことは一種のジェネリックメソッドです。Self多くのコンテキスト (クラス、構造体、プロトコルなど) で使用できますが、Self.Type一致AnyClassするのはクラスのみです。

私の場合、コンパイラはとそのすべてのサブクラスをSelf参照していることを認識している必要があるため (拡張機能内にあるため)、に変換可能でなければなりません。UIViewControllerUIViewControllerSelf.TypeAnyClass

コンパイラは追加の型分析を実行しないため、何か見逃していますか、それとも正しい動作Selfですか?

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

ios - UIViewの拡張

私のコードは Swift 2.0 で書かれており、展開ターゲットは iOS 8.0 以降です。を使用する代わりにUIView.animateWithDuration()、カスタム関数を使用できるように UIView を拡張しようとしています。円を取り、UIView角の半径が高さと幅の半分のままであるが、正方形を埋めるように保持したい。したがって、UIViewは長方形の境界に達するまで現在の形状で拡張する必要があります。UIView で拡張機能を使用したいと思います。以下のように。

動作するコードは.

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

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

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

ストックというより

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

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

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

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

arrays - オプション付きの Swift Array 拡張機能

一意の要素のみを追加する Array の単純な拡張機能を作成しました。オプションの配列を操作するまでは問題なく動作します。それ以来、エラーが発生し続けています Type 'Event?' does not conform to protocol 'Equatable'

イベントクラス

拡大

使用法

質問 この状況がわかりません。Eventクラスはそのプロトコルに準拠しています。他の機能の組み合わせも追加しようとしまし==たが、成功しませんでした。

この問題をどのようにアプローチすればよいかわかりません。それは私の拡張子の問題ですか?どのように適切にアプローチすればよいですか?正しい道を教えていただけますか?

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;

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