确认 CodeGeex 插件已启用并支持 SwiftUI 实时预览,输入 //ui 注释后用自然语言精准描述 UI 层级、交互与数据绑定,仅粘贴生成的 body 内容,手动补全 NavigationStack 和 API 适配即可编译运行。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在 Swift 开发中快速生成符合 SwiftUI 风格的 UI 逻辑代码,避免从零手写 VStack、List 或 NavigationStack 结构,同时确保生成内容能直接粘贴进 Xcode 项目并编译通过——CodeGeex 不是万能补全工具,它依赖你给出明确的组件意图和上下文约束。
确认 CodeGeex 插件已正确接入 Xcode
打开 Xcode → Preferences → Extensions → 检查 “CodeGeex” 是否处于启用状态;若未出现,需前往其官网下载最新 macOS 版插件并手动安装,【旧版 Xcode(低于 15.3)不支持 CodeGeex 的 SwiftUI 实时预览补全】。
重启 Xcode 后,在任意 SwiftUI 文件中输入 //ui 开头的注释,触发 CodeGeex 快捷提示框——如果无响应,说明插件未加载成功,此时不要继续后续步骤。
用自然语言精准描述 UI 需求以获得可用代码
在 SwiftUI 视图文件中,光标置于 body 内部,输入三行注释:
// 主界面:顶部导航栏标题为「我的订单」,下方为带图标和状态标签的订单卡片列表,每张卡片点击后跳转详情页
// 卡片含:订单编号(加粗)、下单时间(灰色小字)、状态标签(绿色背景+白色文字)
// 使用 LazyVStack + ForEach,数据源为 OrderModel 数组
按下 ⌘+Enter(Mac)或 Ctrl+Enter(Windows/Linux 模拟环境),CodeGeex 将生成完整可运行的视图结构。这一步的关键在于把「视觉层级」「交互行为」「数据绑定方式」全部写进注释——漏掉“LazyVStack”会导致生成普通 VStack,滚动性能差;漏掉“OrderModel”则可能返回 String 数组硬编码,无法对接真实模型。
筛选与修正生成的代码
CodeGeex 返回的代码块通常包含三部分:PreviewProvider、struct 定义、body 实现。直接复制整个代码块会覆盖原有文件结构,引发编译错误。
CodeGeeX 2.21.0是智谱AI推出的AI编程助手版本,对Inline Chat功能进行了重大优化,包括UI设计升级、支持流式输出以提升响应速度,并新增“查看思路”按钮以便理解代码原理。同时,该版本在编辑器中新增CodeLens控件,支持一键“解释”代码或“添加注释”。目前该工具对个人开发者免费开放。
只选取 var body: some View { ... } 内部的内容,粘贴到你当前视图的 body 中;PreviewProvider 和 struct 声明【绝不可覆盖原文件顶层结构】,否则 Xcode 会报 “Type ‘XXXView’ does not conform to protocol ‘View’”。
检查生成代码是否含未声明的类型(如 OrderModel)。若出现,需提前在 Models/ 目录下创建该结构体,或临时替换成已有的 ObservableObject 类型——否则编译失败且错误提示指向 body 内部,容易误判为 CodeGeex 生成错误。
注入交互逻辑的两种可靠方式
方法一:在注释中明确要求动作
在注释末尾追加一行:“点击卡片执行 navigationLink(to: OrderDetailView(order: item))”,CodeGeex 会自动包裹 ForEach 项于 NavigationLink 内,并注入 isActive 绑定逻辑。
方法二:手动补全 action 闭包
若生成代码仅含 onTapGesture 而无跳转,找到 onTapGesture 闭包内部,插入:if let selected = item.id { viewModel.selectedOrderID = selected },前提是你的 ViewModel 已声明 selectedOrderID @Published var。
注意:CodeGeex 不会自动推断 ViewModel 层级关系,所有状态变更必须基于当前作用域已声明的变量名,拼写错一个字母就会导致编译失败。
验证与调试生成代码
第一步:Command+B 编译,观察错误集中在哪一行。
第二步:若报错 “Value of type ‘some View’ has no member ‘navigationTitle’”,说明生成代码用了 .navigationBarTitle()(UIKit 风格),需手动改为 .navigationTitle(“我的订单”) —— 这是 SwiftUI 5.0+ 的强制要求。
第三步:运行模拟器,点击卡片,确认是否触发跳转;若无反应,检查 NavigationStack 是否包裹了根视图,【CodeGeex 不会自动为你在外层添加 NavigationStack】。
这一步操作起来很简单,直接把生成的 body 内容粘进去,改两处 API 名,再补一层 NavigationStack 就能跑通。

















