在开发一个小需求的时候,用 cursor 生成代码后,结果并不满意,选择其他 AI 作为补充,顺道把各大模型做了一下对比。
需求
这个需求是这样的:
主页面是白色的,到了内页是深色背景,顶部的导航栏字体颜色要变成白色。
cursor 给的答案是使用 toolbar 来覆盖:
.toolbar {
// 使用 toolbar 来设置标题颜色
ToolbarItem(placement: .principal) {
Text("Text Entry")
.font(.headline) // 设置字体样式
.foregroundColor(.white) // 设置标题颜色为白色
}
}
等于在原有的导航栏上添加了一层 Toolbar,这对于一直有强迫症的前端来说,明显不够优雅。另外导航栏的两侧返回按钮、设置按钮,也需要写更多的代码来实现。
这里选择了国内大家常用的 文心一言、通义千问、Kimi 和 豆包,以及 ollama 上开源的 来做对比。
那我们来看看其他大模型的答案如何。
完美解决型
deepseek-coder-v2 与 通义千问
这两个大模型,都做到了复制即可使用的情况。顺利通过考验。
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
Text("Hello, World!")
.navigationTitle("My Title")
.navigationBarTitleDisplayMode(.inline)
}
.onAppear {
let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.titleTextAttributes = [.foregroundColor: UIColor.red]
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().compactAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
}
}
}
通过 onAppear 定制了导航栏的外观,其中 appearance.titleTextAttributes = [.foregroundColor: UIColor.red]
重置了字体颜色。
一步之遥型
通义千问的开源大模型 qwen2.5-coder,略作修改即可使用。
主要做代码生成,官网号称自己遥遥领先的大模型 codestral:22b,表现也不差,同样略作修改即完成了。
方向正确型
codegeex4:9b 有点难以定义,看着似乎要做对了,同样使用了重置 UINavigationBarAppearance 的方法,但是却在 Toolbar 在一顿操作,最后也没达到效果。
臆想型
很不幸,在 2025 年即将到来之际,还有不少大模型还有臆想的。这里有只有 9b 参数的零一模型的 yi-coder,有 13b 的 codellama 和 20b 的 granite-code,还有通过线上搜索得出答案的 Kimi。
Kimi 是让我比较疑惑的,搜索出来的链接中也没有相关的内容。
其他答案
文心一言提供了另一种答案,作为小白我没有看懂,复制过去也报错了。最后放弃了该方案。虽然很好的代码注释,整体看起来非常完整。碍于本人能力问题,无法验证了。
豆包提供了三种方案,但是第一种答案不正确,第二种答案跟上面的一步之遥的大模型是一样的,第三种答案没有效果。不过还不错的是,复制粘贴过去都是没有报错的。
总结
-
iOS 的 Swift UI 开发不算是小众需求,然而各大模型的答案并不算好。
-
本地的开源大模型不一定比线上的大厂大模型差。最好的两个模型,一个线上一个本地。
- deepseek-coder-v2 的确如所宣传的那样好
- 通义千问和其开源版本 qwen-coder v2.0 对比,似乎通义千问更好,也许是开源版本略微落后的原因。
- 文心一言 似乎想走 cursor 的路线,代码规范,步骤完整,但目前来说,还没有做到复制粘贴即可用
- Kimi 和 豆包 在编码能力还是较弱的,尤其是 Kimi 还需要努力
-
结果好坏跟参数大小关联性也不大,也可能是本次用的大模型参数在 9 ~ 22b 较小规模,所以差别不大。