You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置SwiftGen与xcassets生成嵌套式资源枚举

SwiftGen生成嵌套资源枚举配置方法

生成扁平结构枚举的核心原因只有两个:Asset Catalog的文件夹未开启命名空间、SwiftGen配置关闭了命名空间解析,按以下两步配置即可得到嵌套结构:

1. 配置Asset Catalog(.xcassets)

  • 不要使用Xcode的虚拟分组(无实体文件的黄色文件夹图标分组),这类分组仅做Xcode内的文件整理,不会被SwiftGen识别为层级
  • 在.xcassets中右键选择「New Folder」创建蓝色图标的实体文件夹,按你需要的嵌套层级创建子文件夹,把对应资源放入对应层级文件夹
  • 选中每一层需要作为命名空间的文件夹,打开Xcode右侧的属性检查面板,勾选Provides Namespace选项,所有需要生成嵌套枚举层级的文件夹都要勾选该选项

举个结构示例:如果你需要生成Asset.Icons.Navigation.arrowBack的调用结构,就在xcassets内创建Icons文件夹(勾Provides Namespace),在Icons内创建Navigation子文件夹(勾Provides Namespace),再把arrow-back图片存入Navigation文件夹即可。

2. 配置swiftgen.yml

检查你yml中xcassets的解析配置,确保命名空间解析参数处于开启状态,参考配置如下:

xcassets:
  inputs:
    - 你的Assets.xcassets本地路径
  outputs:
    - templateName: swift5
      output: SwiftGen生成代码的输出路径
      params:
        # 核心参数:开启xcassets的命名空间识别,默认值为true,若之前手动设为false会生成扁平结构
        providesNamespaces: true
        # 可选:如果不想逐个文件夹勾Provides Namespace,可以打开下面参数,强制所有文件夹作为命名空间生成嵌套结构
        # forceNamespaces: true
        enumName: Asset

配置完成后重新执行swiftgen命令生成代码,即可得到预期的多层嵌套枚举结构,效果和官方示例一致。

排错提示:如果配置后还是扁平结构,先检查你建的文件夹是不是蓝色实体文件夹,虚拟黄色分组哪怕勾了Provides Namespace也不会被识别为层级。

内容的提问来源于stack exchange,提问作者Fogmeister

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:16:30