1
名前付き変数の型をチェックする方法を知っています - if var is T
。しかし、ジェネリック関数の戻り値の型をチェックする方法を見つけることができません。Swift:ジェネリック関数の戻り値の型を確認してください。
ライブたとえば、SwiftyJSONを扱う、醜いソリューション:
func getValue<T>(key: String) -> T? {
let result: T // so ugly approach...
if result is Bool {
return json[key].bool as? T
}
if result is Int {
return json[key].int as? T
}
if result is String {
return json[key].string as? T
}
fatalError("unsupported type \(result.dynamicType)")
}
よりエレガントなアプローチを探しています。
「T.self」に感謝します!専門分野に関しては、コードに共通のロジックがあるため、関数を複製したくないと思います。私はプロトコル拡張でそれを解決しました: '' –
brigadir