按下按钮后,用case语句检查值的状态

时间:2017-11-04 23:25:56

标签: swift switch-statement

    @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)
}

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

2 个答案:

答案 0 :(得分: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)
}

答案 1 :(得分:0)

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

您需要使stateOfList成为实例变量。