2017-07-17 38 views
1

的XCode 9,β3斯威夫特4.Swift 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

對我來說,你的編輯有你的答案:閉包類型是() - >(),但是你提供了閉包的一個參數。

相關問題