【发布时间】:2015-03-28 14:50:42
【问题描述】:
我想使用带有本地化字符串的枚举,所以我喜欢这个,它可以工作,但是 这个解决方案的问题是:我无法从本地化字符串中轻松获取枚举值,我必须有钥匙才能做到:
let option = DietWithoutResidueOption(rawValue: "NoDiet")
如果不是我必须调用dietWithoutResidueOptionWith 方法来获取枚举值...:/
有更好的解决方案直接存储localizedString而不是枚举中的键?
谢谢
枚举
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";
打电话
println(DietWithoutResidueOption.FiveDays.localizedString())
【问题讨论】:
-
这是一个very good article,关于 Swift 中的本地化以实现健壮的架构
标签: ios swift enums localization