[解決済み] Swiftで汎用プロトコルを作成するには?
2023-03-22 06:42:07
質問
一般的な入力を受け取り、一般的な値を返すメソッドを持つプロトコルを作りたいのですが、どうすればよいでしょうか。
今まで試したのはこれですが、構文エラーが発生します。
未宣言の識別子Tを使用しています。
私は何を間違えているのでしょうか?
protocol ApiMapperProtocol {
func MapFromSource(T) -> U
}
class UserMapper: NSObject, ApiMapperProtocol {
func MapFromSource(data: NSDictionary) -> UserModel {
var user = UserModel() as UserModel
var accountsData:NSArray = data["Accounts"] as NSArray
return user
}
}
どのように解決するのですか?
プロトコルの場合は少し違います。 Associated Types"を見てください。 をご覧ください。 .
あなたの例ではこのように使います
protocol ApiMapperProtocol {
associatedtype T
associatedtype U
func MapFromSource(_:T) -> U
}
class UserMapper: NSObject, ApiMapperProtocol {
typealias T = NSDictionary
typealias U = UserModel
func MapFromSource(_ data:NSDictionary) -> UserModel {
var user = UserModel()
var accountsData:NSArray = data["Accounts"] as NSArray
// For Swift 1.2, you need this line instead
// var accountsData:NSArray = data["Accounts"] as! NSArray
return user
}
}
関連
-
[解決済み] 使用しているSwiftのバージョンを確認するにはどうすればよいですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] Swiftの@selector()?
-
[解決済み] SwiftでUIAlertViewを作成するにはどうしたらいいですか?
-
[解決済み] クラス 'ViewController' は swift で初期化されません。
-
[解決済み] SwiftUI。TextFieldをファーストレスポンダーにするには?
-
[解決済み] Swift の @escaping と Completion ハンドラ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
swift 4.0でのdispatch_async,dispatch_afterの使用について
-
[解決済み] Swift 1.2では、宣言は「final」と「dynamic」の両方にはなり得ないというエラーがある
-
[解決済み] 既存のUIKitアプリケーションにSwiftUIビューを含める
-
[解決済み] Swiftスクリプトでターミナルコマンドを実行するには?(例:xcodebuild)
-
[解決済み] swift で文字列から数字以外の文字を削除する
-
[解決済み] Swiftの数学関数
-
[解決済み] Swiftでオプショナルをダウンキャストする:as? タイプ、または as! タイプ?
-
[解決済み] あるプロトコルを特定のクラスにのみ適用することを要求する方法
-
[解決済み] Swiftによる文字列中の部分文字列のインデックス
-
[解決済み] Swift で CGFloat を切り上げる