带有静态值的Swift Struct

时间:2017-09-27 13:20:15

标签: swift struct

我使用这个结构:

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'

请帮助。

1 个答案:

答案 0 :(得分:4)

问题是fuel属性是常量。它只初始化一次,然后在整个应用程序生命周期内不会改变。

您可以将static let替换为计算属性 static var fuel: [NSLocalizedString] { return [NSLocalizedString("Gasoline", comment: ""), ...] }

这样,每次访问时都会计算属性。当然,它不会像常数一样快。