[英]Enumeration on enums with associated values - Swift
我有一個帶有關聯值的枚舉。 此外,每個值都有一個String描述。 如何獲得所有情況的描述?
enum MyEnum {
case caseA(data: [DataOfTypeA])
case caseB(data: [DataOfTypeB])
case caseC(data: [DataOfTypeC])
case caseD(data: [DataOfTypeD])
var typeDescription: String {
switch self {
case .caseA:
return "caseA"
case .caseB:
return "caseB"
case .caseC:
return "caseC"
case .caseD:
return "caseD"
}
}
}
我正在尋找的是:
"caseA, caseB, caseC, caseD"
您可以使您的enum
符合CaseIterable
,然后簡單地遍歷allCases
來創建typeDescription
。
enum MyEnum: CaseIterable {
case caseA(data: [Int])
case caseB(data: [String])
case caseC(data: [Date])
case caseD(data: [Data])
static var allCases: [MyEnum] = [.caseA(data: []), .caseB(data: []), .caseC(data: []), .caseD(data: [])]
var caseDescription: String {
switch self {
case .caseA:
return "caseA"
case .caseB:
return "caseB"
case .caseC:
return "caseC"
case .caseD:
return "caseD"
}
}
static var typeDescription: String {
return allCases.map {$0.caseDescription}.joined(separator: ", ")
}
}
假設您有以下變量:
let myEnum = MyEnum.caseA(data: [])
用於訪問關聯值:
switch myEnum {
case .caseA(let data): print(data)
case .caseB(let data): print(data)
case .caseC(let data): print(data)
case .caseD(let data): print(data)
}
用於訪問typeDescription
:
print(myEnum.typeDescription)
或在沒有變量的情況下 :
print(MyEnum.caseA(data: []).typeDescription)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.