错误:"Cannot assign to immutable expression of type 'Bool'"?



如何解决这个问题?我是一个新的程序员。谢谢

我收到以下错误:

"无法分配给类型为'Bool'的不可变表达式">

当我尝试将"isSelected"设置为falsetrue

@IBAction func onFilter(_ sender: Any) {
if ((sender as AnyObject).isSelected == true) {
hideSecondaryMenu()
(sender as AnyObject).isSelected = false
} else {
showSecondaryMenu()
(sender as AnyObject).isSelected = true
}
}

您收到此错误是因为当您将sender转换为AnyObject时,您将获得immutable类型对象,因此您无法更新其属性,解决问题的最佳选择是将发件人声明从Any更改为实际UIControl这意味着如果它是按钮则UIButton

@IBAction func onFilter(_ sender: UIButton) {
hideSecondaryMenu()
sender.isSelected = !sender.isSelected
}

如果您仍想使用Any则将发件人转换为它所属的实际UIControl

@IBAction func onFilter(_ sender: Any) {
if sender is UIButton {
let btn = sender as! UIButton
hideSecondaryMenu()
btn.isSelected = !btn.isSelected
}
}    

相关内容

最新更新