如何遍历一个结构的静态状态?

时间:2019-01-27 05:55:54

标签: ios swift struct static

我正在使用R.swift获取资产名称。我正在创建一个用于检查资产重复项的库,并希望遍历所有资产名称以获取用于检查资产重复性的数据。如何快速遍历静态变量。

struct image {
  static let winnerPunyaOrang = Rswift.ImageResource(bundle: R.hostingBundle, name: "Winner Punya Orang")
  static let fire_ico = Rswift.ImageResource(bundle: R.hostingBundle, name: "fire_ico")
  static let fire = Rswift.ImageResource(bundle: R.hostingBundle, name: "fire")
}

1 个答案:

答案 0 :(得分:0)

您的解决方案存在一些问题:

  1. 不能枚举所有图像,而不必创建和 维护所有值的数组(您不希望这样做)。
  2. 将图像分配给静态变量这一事实将为程序创建大量内存,如果这些图像很大或其中很多,这将尤其糟糕。

更好的方法是使用CaseIterable枚举。这将允许将来使用不会导致内存开销和最少维护的模式来扩展代码。

enum ImageAsset: String, CaseIterable {

  //your cases go here...
  case winnerPunyaOrang = "Winner Punya Orang"
  case fireIco = "fire_ico"
  //... and you can continuously extend them by adding more asset names

  //This function will return images as and when you need them
  func image() -> UIImage {
    return Rswift.ImageResource(bundle: R.hostingBundle, name: self.rawValue)
  }
}

现在,只要您在程序中需要图像资产,就可以调用:

let image = ImageAsset.fireIco.image()