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

寻求开发或查找可基于模板生成Swift文件的工具

Swift文件模板生成工具方案(适配MVVM+DI场景)

这个需求太贴合日常iOS开发的痛点了——每次新建MVVM+DI风格的列表组件都要重复写一堆相似结构的文件,效率极低。下面从现有工具推荐和自定义开发思路两个方向给你解决方案:

一、直接用现有成熟工具

不需要从零开始造轮子,这些工具已经能满足你的核心需求:

  • Xcode自定义文件模板
    Xcode本身就支持自定义模板,你可以把MVVM+DI的ViewController、ViewModel、Cell等模板打包成.xctemplate文件,放在~/Library/Developer/Xcode/Templates/File Templates/目录下。之后在Xcode里「新建文件」时,直接选择你的自定义模板,输入组件名称(比如PersonsList),就能自动生成所有对应命名的文件。
    模板里用Xcode的占位符(比如___FILEBASENAME___)来替换名称,比如ViewController模板的类名可以写成___FILEBASENAME___ViewController,输入PersonsList后就会自动变成PersonsListViewController,还能预写好DI初始化、TableView基础配置这类固定代码。

  • Sourcery
    这是Swift生态里非常流行的代码生成工具,用Stencil模板语法来定义代码结构。你可以提前写好MVVM组件的模板文件,然后通过命令行传入组件名称、是否需要Cell等参数,就能批量生成全套文件。
    它的优势是支持复杂逻辑,比如自动生成ViewModel协议的默认实现、DI注入的扩展方法,还能集成到Xcode的Run Script里,写完配置一键生成。

  • SwiftGen
    虽然它主要用来生成图片、字符串等资源的代码,但也支持扩展自定义模板。同样用Stencil语法,你可以定义业务组件的模板,快速生成符合你需求的MVVM+DI文件。

二、自定义命令行工具(完全定制化)

如果现有工具的灵活性满足不了你的特定规则(比如自定义的DI注入方式、Cell与ViewModel的绑定逻辑),可以自己写一个轻量的命令行工具:

  1. 设计输入方式:让用户通过命令行参数(比如swift-template-generator --name PersonsList --with-cell --enable-di)或者简单的JSON配置文件,传入组件名称、是否需要Cell等需求。
  2. 准备模板文件:用Stencil这类轻量模板引擎,把每个文件的固定结构写好,比如:
    ViewController.stencil示例:
    import UIKit
    
    class {{componentName}}ViewController: UIViewController {
        private let viewModel: {{componentName}}ViewModelProtocol
        
        // 依赖注入初始化
        init(viewModel: {{componentName}}ViewModelProtocol) {
            self.viewModel = viewModel
            super.init(nibName: nil, bundle: nil)
        }
        
        required init?(coder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
        
        override func viewDidLoad() {
            super.viewDidLoad()
            setupTableView()
            bindViewModel()
        }
        
        private func setupTableView() {
            // 预写TableView基础配置
        }
        
        private func bindViewModel() {
            // 预写ViewModel绑定逻辑
        }
    }
    
    同样为ViewModel、ViewModelProtocol、Cell、CellViewModel等文件准备对应的模板。
  3. 实现生成逻辑:读取用户输入的参数,替换模板中的占位符,然后把生成的内容写入到项目对应的目录下,自动创建所有需要的文件。
  4. 集成到Xcode:可以把这个工具做成Xcode的自定义菜单项,或者添加到项目的Run Script中,不用离开Xcode就能一键生成组件。

三、生成效果示例(以PersonsList为例)

当你输入组件名称PersonsList并指定需要Cell和DI时,工具应该自动生成以下文件:

  • PersonsListViewController.swift:带DI初始化、集成UITableView的ViewController
  • PersonsListViewModel.swift:实现ViewModel协议的业务逻辑类
  • PersonsListViewModelProtocol.swift:定义ViewModel接口的协议
  • PersonCell.swift:自定义UITableViewCell
  • PersonCellViewModel.swift:Cell对应的ViewModel类
  • PersonCellViewModelProtocol.swift:CellViewModel的协议

每个文件的类名、协议名都自动替换为对应名称,并且预写好MVVM和DI的基础结构,你只需要填充业务逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:09:02