Есть ли способ получить все значения перечисления в массиве?
Скажем, у меня есть следующий код:
enum Suit {
case Spades, Hearts, Diamonds, Clubs
}
Есть ли способ получить следующий массив?
[Spades, Hearts, Diamonds, Clubs]
Ответ 1
Я не знаю, есть ли способ сделать это. Это действительно хороший вопрос, надеюсь, что кто-то найдет еще один способ, который мне очень полезен.
В любом случае, я сделал что-то, что делает трюк:
Здесь перечисление:
// 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)
Не уверен, что это нужно, но надеюсь, что это поможет.