Enum of tuples in Swift Enum of tuples in Swift swift swift

Enum of tuples in Swift


Swift enumerations cannot have Tuples as a raw value type.

Alternative approaches include storing the code and deriving a description from that:

enum ErrorCode: Int, CustomStringConvertible {    case Generic = 0    case DB = 909    var description: String {        switch self {        case .Generic:            return "Unknown"        case .DB:            return "Database"        }    }}

...or storing associated values for code and description in the enumeration cases themselves:

enum Error {    case Generic(Int, String)    case DB(Int, String)}

If you're just looking for constant values, @matt's suggestion of organizing them within a struct would work, too.


It depends what you mean by "similar". What I do is use a Struct with static constant properties:

struct Trouble {    static let Generic_Error = (0, "Unknown")    static let DB_Error = (909, "Database")}

Now things like Trouble.Generic_Error are usable throughout your code.


You can conform to RawRepresentable and use (Int, String) as the Self.RawValue associated type.

enum ErrorCode: RawRepresentable {    case Generic_Error    case DB_Error    var rawValue: (Int, String) {        switch self {        case .Generic_Error: return (0, "Unknown")        case .DB_Error: return (909, "Database")        }    }    init?(rawValue: (Int, String)) {        switch rawValue {        case (0, "Unknown"): self = .Generic_Error        case (909, "Database"): self = .DB_Error        default: return nil        }    }}