Reputation: 11547
I have two enums and one associated enum. I need to get all the possible cases from enum A and enum B at once.
enum A {
case a
case b
case c
}
enum B {
case d
case e
case f
}
enum C {
case first(A)
case second(B)
}
extension C: CaseItratable {
//How to implement?
}
Need a allCases method in enum C which returns all cases in enum A and all cases in enum B
Upvotes: 4
Views: 68
Reputation: 270770
It's more helpful if A
and B
are CaseIterable
as well, then you can implement CaseIterable
in C
like this:
extension A: CaseIterable {}
extension B: CaseIterable {}
extension C: CaseIterable {
static var allCases: [C] {
return A.allCases.map(C.first) + B.allCases.map(C.second)
}
}
Upvotes: 1
Reputation: 24341
1. Conform enum A
and enum B
to CaseIterable
protocol
enum A: CaseIterable {
case a, b, c
}
enum B: CaseIterable {
case d, e, f
}
2. Get all cases of enum A
and enum B
using allCases
.
enum C {
case first(A)
case second(B)
var casesOfA: [A] {
return A.allCases //here...
}
var casesOfB: [B] {
return B.allCases //here...
}
}
Upvotes: 1