user7423463
user7423463

Reputation:

How to create Enum for hardcoded string in swift?

I have some hardcoded string, based on that i have created switch case. But instead of string in switch case i am trying to create Enum for same. but i am not sure how to do that. I dont want to use default case.

Do i need to access with raw value or any other better way to do ?

enum screens: String {
        case faq = "faq", contactus = "contactus", termncondi = "termncondi", dashoboard = "dashoboard"
    }

    func deepLink(text: String) -> String {
            switch text {
                case "faq":
                    return (FAQ.localized())
                case "contactus":
                    return (Contactus.localized())
                case "termncondi":
                    return (Term.localized())
                case "dashoboard":
                    return (Dashboard.localized())
                default:
                    return ""
            }
        }

Upvotes: 0

Views: 393

Answers (2)

Preefix
Preefix

Reputation: 273

In order to get hardcoded values do something like:

public extension String {
    static func getScreens(name: DeepLink) -> String {
        return name.rawValue
    }

  public enum DeepLink: String {
    case faq = "faq"
    case contactus = "contactus"
    
    // and so on
}
}

Upvotes: 0

Eilon
Eilon

Reputation: 2982

You can simply define the enum and override the rawValue property like so:

enum Link {
    case faq
    case contact
    ...

    var rawValue: String {
        switch self {
            case .faq:
                return FAQ.localized()
            case .contact:
                return Contact.localized()
            default:
                return "Unknown case"
        }
    }
}

And get its rawValue.

let faqLink = Link.faq.rawValue

You can also perform a switch on an enum instance just like you do with a string.

Upvotes: 2

Related Questions