2016-10-03 24 views
-1

で汎用関数を呼び出しますか?スウィフトREPLへは、私は、以下の構造体、変数と関数を持って迅速

let myModel = try? myFunction(str: data) as? MyModel 

リンク「ジェネリックパラメータ 『T』を推論することができませんでした」:あなたのジェネリック型パラメータを制約で宣言されているのでhttp://swiftlang.ng.bluemix.net/#/repl/57f1fa479ce3c95fc38e63b3

+0

'mapStringToModel (str:str)'を呼び出すと、「一般関数を明示的に特殊化することはできません」 – nacho4d

+0

なぜ私はダウン投票しましたか? – nacho4d

+0

質問に答えを含めないでください。回答があなたの問題を解決した場合は、回答を受け入れたものとしてマークしてください。あなた自身で問題を解決した場合は、自分の回答を投稿することもできます。ありがとうございました。 – Moritz

答えて

0

を、次のように:

コードの下には、コンパイラが文句を作ります
func myFunction<T: AnyObject> 

どのタイプを使用するにしても、リファレンスタイプであるか、NSObjectProtocolなどのものを実装する必要があります。

swift構造体は値型であるため、MyModelを汎用型パラメータとして使用することはできません。

ソリューション:

  • 変更、それは値型を受け入れるようにする<T: Any>にジェネリック型の制約。

  • ジェネリック型制約を削除します。

  • 構造体をクラスに変更し、初期化子を追加します。
+0

私は ''を試しましたが、 'try? mapStringToModel(str:str)as? MyModel' – nacho4d

+0

@ nacho4dおっと私はそれについて忘れました。 'try? mapStringToModel(str:str) 'は' MyModel ?? 'です。オプションのラップを2回ラップする必要があります。 – Sweeper

+0

さて、私はそれを得ました。これを行うための簡単な方法があることを願っています。 これは私の最終的なコードです: http://swiftlang.ng.bluemix.net/#/repl/57f20291b1e4a3065dde0213 – nacho4d

関連する問題