J'ai Workout
classe Difficulty
propriétéComment trier les objets par leur valeur enum?
enum Difficulty: String {
case easy = "easy"
case moderate = "moderate"
case hard = "hard"
}
class Workout {
var name: String?
var difficulty: Difficulty?
.
.
.
}
Je voudrais trier un tableau de séances d'entraînement par la propriété difficulté. Je sais que je peux y parvenir en attribuant la valeur brute de ENUM à la valeur Int et comparer ces valeurs comme suit:
data.sort { $0.workout.difficulty!.rawValue < $1.workout.difficulty!.rawValue }
Mais je veux vraiment ce ENUM à chaîne de magasin, car il est commode de l'assigner au texte étiqueter la ligne sans vilains casse-case, et être comparable d'une manière ou d'une autre.
Comment y parvenir?
Vous pouvez utiliser votre énumération hashValue. Btw Vous devriez utiliser une structure au lieu d'une classe. Et comme ce qui a été suggéré par Igor, vous pourriez rendre votre structure comparable au lieu de rendre l'énumération comparable. –
Btw définir une valeur de chaîne à la même que la valeur de l'énumération est redondant –
@LeoDabus merci pour votre suggestion, pourriez-vous donner un exemple complet en tant que réponse? – DCDC