如何在swift中获取枚举的所有值

How to get all values of an enum in swift

本问题已经有最佳答案,请猛点这里访问。

是否有方法获取数组中枚举的所有值?

假设我有以下代码:

1
2
3
enum Suit {
    case Spades, Hearts, Diamonds, Clubs
}

是否有获取以下数组的方法?

1
[Spades, Hearts, Diamonds, Clubs]

我不知道有没有办法。这是一个很好的问题,希望有人能找到另一种方法,那就是我的。不管怎样,我已经做了一些事情来达到这个目的:

这里的枚举:

1
2
3
4
// SuitCount is the last one, so the total of elements (used) is SuitCount-1
enum Suit: Int {
    case Spades, Hearts, Diamonds, Clubs, SuitCount
}

返回值的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func getValueFromSuitAtIndex(#indexOfElement: Int) -> String {

     var value =""

     switch indexOfElement {
     case 0:
        value ="Spades"
     case 1:
        value ="Hearts"
     case 2:
        value ="Diamonds"
     case 3:
        value ="Clubs"
     default:
        value =""
     }  

     return value
}

在另一个函数中,只要您愿意:

1
2
3
4
5
6
var suitElements = String[]()
for index in 0...Suit.SuitCount.toRaw()-1 {
    suitElements.append(self.getValueFromSuitAtIndex(indexOfElement: index))
}
// suitElements printed is: [Spades, Hearts, Diamonds, Clubs]
println(suitElements)

不太确定这是你想要的,但希望能有所帮助。

编辑1:

另一个更好的解决方案是:网址:https://stackoverflow.com/a/24137319/2061450