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

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

我该如何解决这个问题?我是一个新的编码器。谢谢

我收到以下错误:

"Cannot assign to immutable expression of type '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

    }
}

您收到此错误是因为当您将发件人转换为 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
    }
}