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

18 浏览
0 Comments

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

这个问题已经有了答案:如何枚举具有字符串类型的枚举?

有没有一种方法可以将枚举的所有值获取到一个数组中?

假设我有以下代码:

enum Suit {
    case Spades, Hearts, Diamonds, Clubs
}

有没有一种方法可以获取以下数组?

[Spades, Hearts, Diamonds, Clubs]

admin 更改状态以发布 2023年5月23日
0
0 Comments

我不知道是否有一种方法可以实现。这是一个非常好的问题,希望有人会找到一种比我的更通用的方法。
不管怎样,我已经做了一些可以解决问题的东西:

这里是枚举:

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

返回值的函数:

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
}

在另一个函数中,无论您想在哪里:

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

0