我使用这个结构:
struct Constants {
struct array {
static let fuel = [NSLocalizedString("Gasoline", comment: ""),
NSLocalizedString("Diesel", comment: ""),
NSLocalizedString("Hybrid", comment: ""),
NSLocalizedString("Electric", comment: ""),
NSLocalizedString("other", comment: "")]
}
}
我在其他地方拨打电话Constants.array.fuel
,工作正常。
问题是,当我更改应用程序语言时,NSLocalizedString
无法按预期工作(我得到旧翻译)。
可能是因为我使用了static
。在其他viewcontrollers中,NSLocalizedString
工作正常。
当我删除static
时,我得到:
Instance member 'fuel' cannot be used on type 'Constants.array'
请帮助。
答案 0 :(得分:4)
问题是fuel
属性是常量。它只初始化一次,然后在整个应用程序生命周期内不会改变。
您可以将static let
替换为计算属性
static var fuel: [NSLocalizedString] { return [NSLocalizedString("Gasoline", comment: ""), ...] }
这样,每次访问时都会计算属性。当然,它不会像常数一样快。