Мы не можем сказать, что вам действительно нужно, потому что вы не используете Int
или Array
. Возможно, вы хотите 2-String
кортежа необработанных значений:
enum EstimateItemStatus: CaseIterable {
case pending
case onHold
case done
}
extension EstimateItemStatus: RawRepresentable {
init?( rawValue: (String, String) ) {
guard let `case` = ( Self.allCases.first { $0.rawValue == rawValue } )
else { return nil }
self = `case`
}
var rawValue: (String, String) {
switch self {
case .pending:
return ("pending", "?")
case .onHold:
return ("onHold", "?")
case .done:
return ("done", "✅")
}
}
}
EstimateItemStatus( rawValue: ("onHold", "?") )?.rawValue // ("onHold", "?")
EstimateItemStatus( rawValue: ("Bootsy Collins", "?") ) // nil
[("done", "✅"), ("pending", "?")].map(EstimateItemStatus.init) // [done, pending]