- Swift - Access Control
- Swift - Generics
- Swift - Protocols
- Swift - Extensions
- Swift - Type Casting
- Swift - Optional Chaining
- Swift - ARC Overview
- Swift - Deinitialization
- Swift - Initialization
- Swift - Inheritance
- Swift - Subscripts
- Swift - Methods
- Swift - Properties
- Swift - Classes
- Swift - Structures
- Swift - Enumerations
- Swift - Closures
- Swift - Functions
- Swift - Dictionaries
- Swift - Sets
- Swift - Arrays
- Swift - Characters
- Swift - Strings
- Swift - Loops
- Swift - Decision Making
- Swift - Operators
- Swift - Literals
- Swift - Constants
- Swift - Tuples
- Swift - Optionals
- Swift - Variables
- Swift - Data Types
- Swift - Basic Syntax
- Swift - Environment
- Swift - Overview
- Swift - Home
Swift Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Swift - Enumerations
An enumeration is a user-defined data type which consists of set of related values. Keyword enum is used to defined enumerated data type.
Enumeration Functionapty
Enumeration in Swift 4 also resembles the structure of C and Objective C.
It is declared in a class and its values are accessed through the instance of that class.
Initial member value is defined using enum intiapzers.
Its functionapty is also extended by ensuring standard protocol functionapty.
Syntax
Enumerations are introduced with the enum keyword and place their entire definition within a pair of braces −
enum enumname { // enumeration values are described here }
For example, you can define an enumeration for days of week as follows −
enum DaysofaWeek { case Sunday case Monday --- case Saturday }
Example
enum names { case Swift case Closures } var lang = names.Closures lang = .Closures switch lang { case .Swift: print("Welcome to Swift") case .Closures: print("Welcome to Closures") default: print("Introduction") }
When we run the above program using playground, we get the following result −
Welcome to Closures
Swift 4 enumeration does not assign its members default value pke C and Objective C. Instead the members are exppcitly defined by their enumeration names. Enumeration name should start with a capital letter (Ex: enum DaysofaWeek).
var weekDay = DaysofaWeek.Sunday
Here the Enumeration name DaysofaWeek is assigned to a variable weekday.Sunday. It informs the compiler that the datatype belongs to Sunday will be assigned to subsequent enum members of that particular class. Once the enum member datatype is defined, the members can be accessed by passing values and further computations.
Enumeration with Switch Statement
Swift 4 Switch statement also follows the multi way selection. Only one variable is accessed at a particular time based on the specified condition. Default case in switch statement is used to trap unspecified cases.
enum Cpmate { case India case America case Africa case Austrapa } var season = Cpmate.America season = .America switch season { case .India: print("Cpmate is Hot") case .America: print("Cpmate is Cold") case .Africa: print("Cpmate is Moderate") case .Austrapa: print("Cpmate is Rainy") }
When we run the above program using playground, we get the following result −
Cpmate is Cold
The program first defines Cpmate as the enumeration name. Then its members pke India , America , Africa and Austrapa are declared belonging to class Cpmate . Now the member America is assigned to a Season Variable. Further, Switch case will see the values corresponding to .America and it will branch to that particular statement. The output will be displayed as "Cpmate is Cold". Likewise all the members can be accessed through switch statements. When the condition is not satisfied it prints by default Cpmate is not predictable .
Enumeration can be further classified in to associated values and raw values.
Difference between Associated Values and Raw Values
Associated Values | Raw Values |
Different Datatypes | Same Datatypes |
Ex: enum {10,0.8,"Hello"} | Ex: enum {10,35,50} |
Values are created based on constant or variable | Prepopulated Values |
Varies when declared each time | Value for member is same |
Enum with Associated Values
enum Student { case Name(String) case Mark(Int,Int,Int) } var studDetails = Student.Name("Swift 4") var studMarks = Student.Mark(98,97,95) switch studMarks { case .Name(let studName): print("Student name is: (studName).") case .Mark(let Mark1, let Mark2, let Mark3): print("Student Marks are: (Mark1),(Mark2),(Mark3).") }
When we run the above program using playground, we get the following result −
Student Marks are: 98,97,95.
Consider for example to access the students name and marks secured in three subjects enumeration name is declared as student and the members present in enum class are name which belongs to string datatype, marks are represented as mark1, mark2 and mark3 of datatype Integer. To access either the student name or marks they have scored
var studDetails = Student.Name("Swift") var studMarks = Student.Mark(98,97,95)
Now, the switch case will print student name if that case block is executed otherwise it will print the marks secured by the student. If both the conditions fail, the default block will be executed.
Enum with Raw Values
Raw values can be strings, characters, or any of the integer or floating-point number types. Each raw value must be unique within its enumeration declaration. When integers are used for raw values, they auto-increment if no value is specified for some of the enumeration members.
enum Month: Int { case January = 1, February, March, April, May, June, July, August, September, October, November, December } let yearMonth = Month.May.rawValue print("Value of the Month is: (yearMonth).")
When we run the above program using playground, we get the following result −
Value of the Month is: 5.Advertisements