簡體   English   中英

如何在Swift中將多個值與枚舉關聯?

[英]How to associate multiple values with enums in Swift?

我正在嘗試使用一個枚舉對UITableView的各個部分進行分類。

這是Section enum的當前實現:

enum Section: Int, CustomStringConvertible {

    case open = 0
    case closed = 1

    var description: String {
        switch self {
        case .open:
            return "Open"
        case .closed:
            return "Closed"
        }
    }
}

這是我使用它命名UITableView部分中標題標題的方式:

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return Section(rawValue: section)?.description
}

我只是想知道是否有更好的方法來實現這一點。 也許與元組。 我不確定,但是我很想看看是否有更好的解決方案。

這只是一個用例,給出的兩個用例只是為了簡潔。 我想使用多個值,例如與給定case相關聯的UIColors

如果您要做的只是在數字和字符串之間建立對應關系:

0 -> Open
1 -> Closed

...那么很難看到枚舉的用途。 您想要的是一本字典 ,其中數字是鍵,甚至只是一個簡單的數組

let arr = ["Open", "Closed"]

在數組中,字符串由數字索引:

return arr[rawValue: section]

如果要使用枚舉為標頭提供其他信息(例如,背景色等),則可以像對說明一樣向枚舉添加更多的變量。

但是,如果僅將標題用作標題,則使用數組可能會更好:

let sectionTitles = ["Open", "Closed"] //var if the section can change.

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return sectionTitles[section]
}

假設您將向此枚舉添加更多變量或功能,那么語法就可以了。 您可以在命名如下情況時進行合並:

case open, closed, thirdCase, fourthCase

如果您的枚舉的rawValue為Int,並且個案從0開始並遞增編號,則不必分配值。

如果您希望增量以不同於0的數字開頭,則可以這樣設置:

case open = 3, closed, thirdCase, fourthCase

您的案例的原始值將為3、4、5、6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM