如何在Swift中获取枚举的所有值
如何在Swift中获取枚举的所有值
这个问题已经有了答案:如何枚举具有字符串类型的枚举?
有没有一种方法可以将枚举的所有值获取到一个数组中?
假设我有以下代码:
enum Suit { case Spades, Hearts, Diamonds, Clubs }
有没有一种方法可以获取以下数组?
[Spades, Hearts, Diamonds, Clubs]
admin 更改状态以发布 2023年5月23日
我不知道是否有一种方法可以实现。这是一个非常好的问题,希望有人会找到一种比我的更通用的方法。
不管怎样,我已经做了一些可以解决问题的东西:
这里是枚举:
// 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