2017-07-17 2 views
1

XCodeの9、ベータ3スウィフト4.スイフト4: '(_) - > Void'の値を割り当てることができません '(() - >())?'

let button = JumpingButton(x: 0, y: 50, w: 150, h: 300) // JumpingButton: UIButton 
    //Inside JumpingButton: // var clickAction: (() ->())? 


    button.clickAction = { (sender) -> Void in //Error line 
     action() 
     Sound.playSound(Sounds.Button) 
    } 

エラーを取得する: - '?(() - >())' 型の値を割り当てることができません '(_)>ボイド' と入力します

+0

どのようなタイプの 'button'ですか?プロパティではパラメータなしのクロージャが必要なようです。あなたは 'button.clickAction = {action();を試すことができますか? ...} '? –

+0

が編集されました。それがうまくいって、答えを提供したいですか? – Esqarrouth

+0

回答を追加しました –

答えて

3

clickActionは、パラメータのない関数/クロージャが必要です。コードを次のように変更してください:

button.clickAction = { 
    action() 
    Sound.playSound(Sounds.Button) 
} 
1

私は、これらの機能のAPI(あなたは彼らが何であるか私たちに語ったことはありません)について何を知っているが、ここでエラーがあなたに伝え何しません。

Cannot assign value of type

それはあるパラメータの受け渡しを参照しています種類の「割り当て」

'(_) -> Void'

これは、パラメータに指定した引数の型です。不明な型のパラメータを持っています(_)、返します(->Void

to type '(() ->())?'

これは、このパラメータに必要な引数のタイプです。それは、それは(->Void())を返す(())のパラメータはありません、それはオプションです((...)?

だから問題は、あなたが期待するパラメータに引数としてパラメータでクロージャを渡しているということですパラメータのないクロージャ。

0

あなたの編集には答えがあります:クロージャタイプは() - >()ですが、クロージャにパラメータを指定しています。

関連する問題