[英]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.