【问题标题】:Error: "Cannot assign to immutable expression of type 'Bool'"?错误:“无法分配给'Bool'类型的不可变表达式”?
【发布时间】:2017-04-14 07:45:47
【问题描述】:

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

我收到以下错误:

“不能分配给'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

    }
}

【问题讨论】:

    标签: xcode swift3 immutability sender


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 2015-11-12
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      相关资源
      最近更新 更多