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

Ras*_*spa 31 swift

有没有办法在数组中获取枚举的所有值?

假设我有以下代码:

enum Suit {
    case Spades, Hearts, Diamonds, Clubs
}
Run Code Online (Sandbox Code Playgroud)

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

[Spades, Hearts, Diamonds, Clubs]
Run Code Online (Sandbox Code Playgroud)

Lap*_*nou 7

我不知道是否有办法做到这一点.这是一个非常好的问题,希望有人能找到另一种比我更通用的方法.无论如何,我做了一些诀窍:

这里的枚举:

// SuitCount is the last one, so the total of elements (used) is SuitCount-1
enum Suit: Int {
    case Spades, Hearts, Diamonds, Clubs, SuitCount
}
Run Code Online (Sandbox Code Playgroud)

返回值的函数:

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
}
Run Code Online (Sandbox Code Playgroud)

而在另一个功能,你想要的地方:

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)
Run Code Online (Sandbox Code Playgroud)

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

编辑1:

另一种解决方案,更好:https: //stackoverflow.com/a/24137319/2061450