Chcę użyć wyliczenia z zlokalizowanym ciągiem znaków, więc to mi się podoba, działa, ale problem z tym rozwiązaniem: Nie mogę łatwo wyliczyć wartości z zlokalizowanego ciągu, muszę mieć klucz, aby to zrobić:Enum z zlokalizowanym ciągiem w swift
let option = DietWithoutResidueOption(rawValue: "NoDiet")
jeśli nie muszę zadzwonić metoda dietWithoutResidueOptionWith uzyskać wartość enum ...:/
Istnieje lepsze rozwiązanie do przechowywania bezpośrednio localizedString a nie klucze w enum?
Dzięki
Wyliczanie
enum DietWithoutResidueOption: String {
case NoDiet = "NoDiet"
case ThreeDays = "ThreeDays"
case FiveDays = "FiveDays"
private func localizedString() -> String {
return NSLocalizedString(self.rawValue, comment: "")
}
static func dietWithoutResidueOptionWith(#localizedString: String) -> DietWithoutResidueOption {
switch localizedString {
case DietWithoutResidueOption.ThreeDays.localizedString():
return DietWithoutResidueOption.ThreeDays
case DietWithoutResidueOption.FiveDays.localizedString():
return DietWithoutResidueOption.FiveDays
default:
return DietWithoutResidueOption.NoDiet
}
}
}
Localizable.strings
"NoDiet" = "NON, JE N'AI PAS DE RÉGIME";
"ThreeDays" = "OUI, SUR 3 JOURS";
"FiveDays" = "OUI, SUR 5 JOURS";
wezwanie
println(DietWithoutResidueOption.FiveDays.localizedString())
Nie możesz zapomnieć o dodaniu zlokalizowanych wersji ciągu do "Localizable.strings", w przeciwnym razie nie byłoby przetłumaczonej wersji. – NerdyTherapist