問題タブ [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.
ios - 他のプロトコルによって制限されているジェネリック型でプロトコル メソッドを呼び出すことはできません
私は次のものを持っています:
Guard
異なるクラス タイプの任意の数のオブジェクト、および他のオブジェクトにプロトコルを割り当てたいと考えていPrisoner
ます。ガードとして機能するオブジェクトは、クラス タイプに応じて、独自のスマック実装を持ちます。smackAll
しかし、継承する可能性のある各クラスを書き直す理由はありませんGuard
。だから私はこのようにしようとしていますが、コンパイラは私を許しません。私は何が欠けていますか?
swift - Swift でインスタンス タイプを返す
私はこの拡張機能を作ろうとしています:
しかし、コンパイルエラーが発生します:
エラー: タイプ 'UIViewController' の戻り式を戻りタイプ 'Self' に変換できません
出来ますか?また、私はそれをinit(storyboardName: String, storyboardId: String)
objective-c - Swift 拡張ファイルの Obj-C プロパティへのアクセス
ビュー コントローラーで Swift 拡張機能を書き始めました。したがって、現在3つのファイルがあります。
私のヘッダーファイルViewController.h
:
私の Obj-C 実装ファイルViewController.m
:
そして最後に、ViewController.swift
:
私の質問は、Swift 実装ファイルから Obj-C プロパティにアクセスすることは可能ですか? それを参照するたびに、エラーが発生しました:
ボーナス 1: Swift コンポーネントが .m のデリゲートも認識できるかどうかを誰かが明確にすることもできます。(明確にするscrollView.delegate = self
ために、Swift ファイルは .m ファイルが UIScrollViewDelegate であることを認識しないため、Swift で実行するとコンパイル エラーになります)。
ボーナス 2: Swift 拡張ファイルは、対応する .m から宣言された Obj-C メソッドを呼び出すことができますか?
arrays - Swift 辞書拡張機能の配列 sortInPlace
Swift 2.1 を使用して、辞書の配列をキー dateKey の日付値でソートする関数を作成しようとしています。
これを Array 型の拡張として追加したいので、次を使用して呼び出すことができますsomeArray.sortDictionariesByDate(dateKey: String, dateFormatter: NSDateFormatter)
これは、辞書の型が である限り問題なく動作しますが[String: AnyObject]
、型の辞書で使用すると、にキャストできないため機能し[String: String]
ません。これは がではないためだと思います。代わりに要素を型キャストしようとしましたが、型または型の辞書を使用しても機能しません。String
AnyObject
String
Struct
Class
[String: Any]
[String: AnyObject]
[String: String]
キーの型String
と任意の値の型 (など) を持つ辞書をサポートするために使用できるキャストString
、AnyObject
または完全にキャストを回避するために拡張機能に追加できる where 句またはプロトコルの適合性はありますか?
編集:リクエストごとに2つの例の配列を次に示します
swift - 適合型のプロトコル拡張の実装に失敗しました
(必要に応じて質問のタイトルを自由に変更してください)
私は多くの BLE データを扱っており、デバッグの目的でUInt8
、HEX
計算された変数で簡単に拡張できることがわかりました。
小文字のバリアントが必要であることに気付きました。そして、私はそれが欲しかったのUInt32
ですUInt16
。変更されるのは印刷する桁数だけなので、ある種のプロトコルでこれを行うことができると思いました (少なくとも教育目的では)。
HEX
次に、これを利用してandhex
メソッドのデフォルトの実装を提供したい部分です。
コンパイラ エラーが発生しますArgument type 'Self' does not conform to expected type 'CVarArgType'
。
私はこれを理解していると思います。CVarArgType
プロトコルとして、そのような文字列初期化子で使用できる型 ( ) を採用する型になることを保証できないと言っています。where
それで初めて節を使えると思った。プロトコル拡張を次のように変更しました。
これはにつながりSame-type requirement makes generic parameter 'Self' non-generic
ます。その時点で私のアマチュアタイプの理論家の理解があふれました。異なる UInt サイズで 2 つの拡張メソッドを機能させる魔法は何ですか?
swift - キーボード拡張機能の UICollectionview
私は迅速に作成したキーボード拡張機能に UICollectionview を取得しようとしました。しかし、私はそれを機能させることができません。キーボードは起動時にクラッシュするだけです。誰でもこれを修正する方法を知っていますか? または、キーボード拡張機能で UICollectionview を使用することさえ可能ですか。
class KeyboardViewController: UIInputViewController、UICollectionViewDelegateFlowLayout、UICollectionViewDataSource{
}