ios - 如何遍历结构的静态常量?

标签 ios swift struct static

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

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. 如果不创建和 维护所有值的数组(您不想这样做)。
  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()

关于ios - 如何遍历结构的静态常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54385470/

相关文章:

c - 结构、指针和改变它们

ios - 在 iOS7 上将 CIFilter 应用于 SKEffectNode

iphone - 在 XIB 内的分段 Controller 中本地化文本

swift - 如何更改 NSSegmentedControl 按钮的选择颜色

swift - 如何在类中定义 "inline struct"而无需先在 swift (以及更多)中声明它?

C - 带有结构数组的 printf 字符串

ios - Xamarin.iOS 错误 : The Apple iOS SDK is not installed.(iOS9、XCode 7 测试版)

ios - 如何在 View 中沿对角线显示渐变

ios - 我们可以在 UITableView 的一部分中快速实现部分吗?

ios - 我在 iOS 上有一个 Objective-C 应用程序,如何构建 Swift Watch 扩展?