我使用这个结构:

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/

10-11 04:26