swift - 按下按钮后使用 case 语句检查值的状态

标签 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)
}

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

最佳答案

使 var stateOfList 成为 View Controller 的实例属性以保存状态并在第二次按下时再次访问它。

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

关于swift - 按下按钮后使用 case 语句检查值的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47116643/

相关文章:

swift - 如何检查开关中 UIButton 的 currentTitle?

ruby - 在 Ruby 的情况下使用带正则表达式匹配的命名捕获……什么时候?

java - 为什么 Java 12 会尝试将 switch 的结果转换为数字?

objective-c - 如何从登录项属性文件 (com.apple.loginitems.plist) 解析 NSData

swift - 将 SWRevealViewController 嵌入到您的应用程序中

ios - SwiftUI .onTapGesture 从未调用过

ios - UIScrollView setZoomscale 不适用于 ViewWillApper

ios - AVPlayer:在 Swift 中播放 “on the fly” 转码音频文件

json - 检索并使用Volley错误HTTP响应代码和开关大小写来处理错误

android - 如何使用 viewflipper 在 Activity 之间切换