我使用这个结构:
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
工作正常。当我删除
NSLocalizedString
时,我得到:Instance member 'fuel' cannot be used on type 'Constants.array'
请帮忙。
最佳答案
问题是fuel
属性是一个常量。它只初始化一次,然后在整个应用程序生命周期内不会更改。
您可以将static let
替换为static var fuel: [NSLocalizedString] { return [NSLocalizedString("Gasoline", comment: ""), ...] }
这样,每次访问属性时都会计算属性。当然,它不会像常数那样快。
关于swift - 具有静态值的Swift Struct,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46448973/