@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;。我在这做错了什么?
答案 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成为实例变量。