【问题标题】:Check state of value with case statement after pressing a button按下按钮后使用 case 语句检查值的状态
【发布时间】:2017-11-04 23:25:56
【问题描述】:
    @IBAction func sortList(_ sender: Any) {
    var stateOfList = 0
    var sortedList = array
    switch stateOfList {
    case 0:
        sortedList = array.sorted { ($0.priceUsd!) > ($1.priceUsd!) }
        stateOfList = 1
    case 1:
        sortedList = array.sorted { ($0.priceUsd!) < ($1.priceUsd!) }
        stateOfList = 2
    case 2:
        sortedList = array.sorted { ($0.rank) < ($1.rank) }
        stateOfList = 0
    default:
        stateOfList = 0
    }


    array = sortedList
    tableView.reloadData()
    print(stateOfList)
}

我想对数组进行排序并在按下按钮后更改列表的状态。第二次按下应该在另一个方向上对数组进行排序。但是编译器告诉我“永远不会被执行”。我在这里做错了什么?

【问题讨论】:

    标签: swift switch-statement


    【解决方案1】:

    使 var stateOfList 成为视图控制器的实例属性,以保存状态并在第二次按下时再次访问它。

    var stateOfList = 0
    

    你的功能会是这样的

    @IBAction func sortList(_ sender: Any) {
        var sortedList = array
        switch stateOfList {
        case 0:
            sortedList = array.sorted { ($0.priceUsd!) > ($1.priceUsd!) }
            stateOfList = 1
        case 1:
            sortedList = array.sorted { ($0.priceUsd!) < ($1.priceUsd!) }
            stateOfList = 2
        case 2:
            sortedList = array.sorted { ($0.rank) < ($1.rank) }
            stateOfList = 0
        default:
            stateOfList = 0
        }
    
        array = sortedList
        tableView.reloadData()
        print(stateOfList)
    }
    

    【讨论】:

    • 你的意思是让 stateOfList 成为视图控制器的实例属性
    【解决方案2】:

    var stateOfList 只是该函数中的一个局部变量。每次调用该函数时,它都会初始化为 0,因此只会执行 case 0。

    您需要将 stateOfList 设为实例变量。

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      相关资源
      最近更新 更多