Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update / change the rawValue of a enum in Swift

Tags:

enums

ios

swift

Taking the below enum for instance

enum Name : String {

  case Me = "Prakash"
  case You = "Raman"

}

Can I do the following

Change the raw value of one "case" to something else.

Name.Me = "Prak"

Add a new case to the ENUM

Name.Last = "Benjamin"

Thanks!

like image 296
Prakash Raman Avatar asked Feb 23 '16 10:02

Prakash Raman


2 Answers

No you cannot. Instead You can redefine your enum to contain associated values instead of raw values.

enum Name {
    case Me(String)
    case You(String)
    case Last(String)
}

var me = Name.Me("Prakash")
print(me)
me = .You("Raman")
print(me)
me = .Last("Singh")
print(me)
like image 127
Pradeep K Avatar answered Oct 20 '22 05:10

Pradeep K


Short answer: No, you can't.

Enumeration types are evaluated at compile time.
It's not possible to change raw values nor to add cases at runtime.

The only dynamic behavior is using associated values.

Reference: Swift Language Guide: Enumerations

like image 40
vadian Avatar answered Oct 20 '22 04:10

vadian