で汎用関数を呼び出しますか?スウィフトREPLへは、私は、以下の構造体、変数と関数を持って迅速
let myModel = try? myFunction(str: data) as? MyModel
リンク「ジェネリックパラメータ 『T』を推論することができませんでした」:あなたのジェネリック型パラメータを制約で宣言されているのでhttp://swiftlang.ng.bluemix.net/#/repl/57f1fa479ce3c95fc38e63b3
で汎用関数を呼び出しますか?スウィフトREPLへは、私は、以下の構造体、変数と関数を持って迅速
let myModel = try? myFunction(str: data) as? MyModel
リンク「ジェネリックパラメータ 『T』を推論することができませんでした」:あなたのジェネリック型パラメータを制約で宣言されているのでhttp://swiftlang.ng.bluemix.net/#/repl/57f1fa479ce3c95fc38e63b3
を、次のように:
コードの下には、コンパイラが文句を作りますfunc myFunction<T: AnyObject>
どのタイプを使用するにしても、リファレンスタイプであるか、NSObjectProtocol
などのものを実装する必要があります。
swift構造体は値型であるため、MyModel
を汎用型パラメータとして使用することはできません。
ソリューション:
変更、それは値型を受け入れるようにする<T: Any>
にジェネリック型の制約。
ジェネリック型制約を削除します。
私は '
@ nacho4dおっと私はそれについて忘れました。 'try? mapStringToModel(str:str) 'は' MyModel ?? 'です。オプションのラップを2回ラップする必要があります。 – Sweeper
さて、私はそれを得ました。これを行うための簡単な方法があることを願っています。 これは私の最終的なコードです: http://swiftlang.ng.bluemix.net/#/repl/57f20291b1e4a3065dde0213 – nacho4d
'mapStringToModel(str:str)'を呼び出すと、「一般関数を明示的に特殊化することはできません」 –
nacho4d
なぜ私はダウン投票しましたか? – nacho4d
質問に答えを含めないでください。回答があなたの問題を解決した場合は、回答を受け入れたものとしてマークしてください。あなた自身で問題を解決した場合は、自分の回答を投稿することもできます。ありがとうございました。 – Moritz