2017-11-01 8 views
2

タプルコレクションでVoid型を宣言するのに問題があります。私はすでに辞書コレクションとタイプVoidを宣言するさまざまな方法の前にlazyVoid ->()() -> Void、ない結果とを配置しようとしたNil is not compatible with expected element type 'Void 'タプルにVoidの型を追加するにはどうすればいいですか?

var messages: [(person: String, type: String, text: String, action: Void, isSender: Bool)]? = [ 
    (person: "Buddy", type: "instruction", text: "Wat vervelend van uw schade. De volgende vragen moeten direct op locatie ingevuld worden", action: nil, isSender: false), 
    (person: "User", type: "question", text: "Wat is uw locatie en tijd?", action: askPermissionForGPS(), isSender: true) 
] 

: 私はのエラーを取得します。

私が望むのは、タプルが引数またはnilとしての機能を持つことができるということです。

+1

を使用してみてください:() - > Void – Rishabh

+0

既に試しました。同じ結果 – Caspert

+0

'nil'を許可する場合は、'(() - > Void)? 'を使用することもできます。 –

答えて

5

オプションの

var messages: [(person: String, type: String, text: String, action: Void?, isSender: Bool)]? = [ ... 

としてactionパラメータを宣言する必要がしかし、私は閉鎖

として actionパラメータを宣言することをお勧めしますその後、
var messages: [(person: String, type: String, text: String, action: (()->Void)?, isSender: Bool)]? = [ ... 

あなただけの関数名を渡すことができ

Voidの代わりに
2

Voidは、0要素タプルの場合はtypealiasです。私はあなたが閉鎖されるアクションタイプを持っていると思っています。 () ->()。そして、それができるならばnil - それは、オプションの作る:あなたはnilを使用したい場合は(() ->())?

関連する問題