SuperAPI AI 工具集

swiftui-pro

编程与开发

查看项目

更新于 10-15 12:56

技能介绍

用途

SwiftUI Pro 用于审查 Swift 与 SwiftUI 代码的正确性、现代 API 使用情况以及对项目约定的遵循程度。它的定位是代码审查辅助技能,适用于阅读、编写或审查 SwiftUI 代码的场合。其明确要求是:只报告真实存在的问题,不要吹毛求疵,也不要虚构问题。

主要能力

该技能按一套固定的审查流程工作,每一步都对应一份参考文件:

  • 依据 references/api.md 检查是否使用了废弃 API。
  • 依据 references/views.md 检查视图、修饰符和动画是否以最优方式编写。
  • 依据 references/data.md 验证数据流是否配置正确。
  • 依据 references/navigation.md 确保导航已更新且具备性能。
  • 依据 references/design.md 确保代码使用的设计可访问,并符合 Apple 人机界面指南。
  • 依据 references/accessibility.md 验证无障碍合规,包括 Dynamic Type、VoiceOver 和 Reduce Motion。
  • 依据 references/performance.md 确保代码能高效运行。
  • 依据 references/swift.md 对 Swift 代码进行快速校验。
  • 依据 references/hygiene.md 做最终的代码卫生检查。

如果只做部分审查,则只加载相关的参考文件。

核心规则

技能给出的核心指令包括:iOS 26 已存在,并且是新应用的默认部署目标;目标为 Swift 6.2 或更高版本,使用现代 Swift 并发;作为 SwiftUI 开发者,除非被要求,否则用户会希望避免使用 UIKit;未经询问不要引入第三方框架;应把不同类型拆分到不同的 Swift 文件中,而不是在一个文件里放多个 struct、class 或 enum;使用一致的项目结构,文件夹布局由应用功能决定。

输出格式

输出按文件组织。对每个问题需要:写明文件与相关行号;指出被违反的规则(例如“使用 foregroundStyle() 而不是 foregroundColor()”);给出简短的修改前后代码对比。没有问题的文件可以跳过。最后以优先级汇总结尾,列出应最先进行的最有影响的改动。

资料中给出的示例输出展示了这一格式,例如:

ContentView.swift

第 12 行:使用 foregroundStyle() 而不是 foregroundColor()。

// Before
Text("Hello").foregroundColor(.red)

// After
Text("Hello").foregroundStyle(.red)

第 24 行:仅图标的按钮对 VoiceOver 不友好——添加文本标签。

// Before
Button(action: addUser) {
    Image(systemName: "plus")
}

// After
Button("Add User", systemImage: "plus", action: addUser)

第 31 行:避免在视图 body 中使用 Binding(get:set:)——改用 @State 配合 onChange()。

// Before
TextField("Username", text: Binding(
    get: { model.username },
    set: { model.username = $0; model.save() }
))

// After
TextField("Username", text: $model.username)
    .onChange(of: model.username) {
        model.save()
    }

汇总示例:

  • 无障碍(高):第 24 行的添加按钮对 VoiceOver 不可见。
  • 废弃 API(中):第 12 行的 foregroundColor() 应改为 foregroundStyle()。
  • 数据流(中):第 31 行的手动绑定较脆弱且更难维护。

适用场景

适用于需要按现代 SwiftUI 实践审查代码的场合,包括检查废弃 API、视图与动画写法、数据流、导航、设计与无障碍合规、性能以及 Swift 代码卫生。既可用于完整审查,也可用于只关注某一方面的部分审查。

限制

资料未提供该技能的安装方式、运行环境要求、收费或价格信息、平台支持范围以及效果保证。上述参考文件的具体内容除文件名与主题外,资料中也未展开。