Tuesday, March 17, 2026
HomeiOS DevelopmentSwift enum all values - The.Swift.Dev.

Swift enum all values – The.Swift.Dev.



· 1 min learn


On this fast tutorial I am going to present you methods to get all of the attainable values for a Swift enum sort with a generic resolution written in Swift.

From Swift 4.2 you’ll be able to merely conform to the CaseIterable protocol, and also you’ll get the allCases static property without spending a dime. In case you are studying this weblog submit in 2023, you must undoubtedly improve your Swift language model to the newest. 🎉

enum ABC: String, CaseIterable {
    case a, b, c
}


print(ABC.allCases.map { $0.rawValue })

In case you are concentrating on under Swift 4.2, be at liberty to make use of the next technique.

The EnumCollection protocol method

First we have to outline a brand new EnumCollection protocol, after which we’ll make a protocol extension on it, so that you don’t have to jot down an excessive amount of code in any respect.

public protocol EnumCollection: Hashable {
    static func instances() -> AnySequence
    static var allValues: [Self] { get }
}

public extension EnumCollection {

    public static func instances() -> AnySequence {
        return AnySequence { () -> AnyIterator in
            var uncooked = 0
            return AnyIterator {
                let present: Self = withUnsafePointer(to: &uncooked) { $0.withMemoryRebound(to: self, capability: 1) { $0.pointee } }
                guard present.hashValue == uncooked else {
                    return nil
                }
                uncooked += 1
                return present
            }
        }
    }

    public static var allValues: [Self] {
        return Array(self.instances())
    }
}

Any more you solely have to evolve your enum sorts to the EnumCollection protocol and you may benefit from the model new instances technique and allValues property which is able to comprise all of the attainable values for that given enumeration.

enum Weekdays: String, EnumCollection {
    case sunday, monday, tuesday, wednesday, thursday, friday, saturday
}

for weekday in Weekdays.instances() {
    print(weekday.rawValue)
}

print(Weekdays.allValues.map { $0.rawValue.capitalized })

Word that the bottom sort of the enumeration must be Hashable, however that’s not a giant deal. Nonetheless this resolution looks like previous tense, similar to Swift 4, please contemplate upgrading your challenge to the newest model of Swift. 👋

Associated posts


Be taught the whole lot about logical sorts and the Boolean algebra utilizing the Swift programming language and a few primary math.


Discover ways to talk with API endpoints utilizing the model new SwiftHttp library, together with async / await assist.


The one and solely tutorial that you’re going to ever have to be taught greater order features like: map, flatMap, compactMap, scale back, filter and extra.


Be taught the very fundamentals about protocols, existentials, opaque sorts and the way they’re associated to generic programming in Swift.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments