环境与第一个可运行界面:Mac、Xcode 和你的第一行 SwiftUI
这一章要做什么
上一章想清楚了做什么。这一章开始动手:在你的 Mac 上装好写 iOS App 需要的工具,让 AI 帮你写出第一个能在模拟器里跑起来的界面。全程不需要一台真的 iPhone,也不需要花一分钱。
要花多少钱:先把这件事讲清楚
新手最常见的误会是「做 iOS App 一上来就要交 99 美元」。实际情况分四层:
- Xcode 本身:免费,从 Mac App Store 下载。
- 写代码、在模拟器里跑起来:全程不花钱,也不需要注册开发者账号;只在模拟器里跑的话,连 Apple ID 都不用登录,以后想装到真机上再登录一个免费的 Apple ID 就行。
- 把 App 装到自己的真机上试跑:用免费 Apple ID 就够,不需要 99 美元的开发者账号——限制是同时能装的设备数量有限,而且 App 大概一周左右会过期,需要重新用 Xcode 装一次。这段说法按 Apple 官方文档(developer.apple.com/support/compare-memberships,2026-09-07 查阅)整理。苹果的条款会调整,正式操作前以官方页面当前说明为准。
- 什么时候才需要 99 美元一年的 Apple Developer Program:把 App 提交上架 App Store、用 TestFlight 邀请别人帮你测试、用到推送通知这类需要苹果服务器介入的能力。这些都是后面付费章节的内容,这一章你不需要花这笔钱。
装 Xcode
打开 Mac App Store,搜索"Xcode",点安装——体积有几十 GB,建议在 Wi-Fi 下装,会花一点时间。装完第一次打开,同意许可协议,等它把「额外组件」装完。
验证装好了:打开「终端」 App,输入一行命令:
xcodebuild -version
标注「实测」:写这篇文章时在这台 Mac 上实际跑过一遍,输出类似这样(版本号在你自己的机器上大概率不同,能看到 Xcode 加一个版本号就说明装好了):
Xcode 26.6
Build version 17F113
认识模拟器:你 Mac 里的虚拟 iPhone
不需要一台真的 iPhone,Xcode 自带的模拟器就是一台跑在 Mac 里的虚拟 iPhone。终端里输入:
xcrun simctl list devices available
标注「实测」:写这篇文章时在这台 Mac 上跑出的结果(节选,你机器上的型号列表会不同):
== Devices ==
-- iOS 26.5 --
iPhone 17 Pro (Shutdown)
iPhone 17 Pro Max (Shutdown)
这行命令列出机器上已经装好的虚拟设备,等下新建项目跑起来时会用到——不用记住这行命令,Xcode 界面里点几下也能选到同样的设备。
SwiftUI 一句话是什么
SwiftUI 是苹果官方的界面搭建方式:用一段描述「界面长什么样」的 Swift 代码,去描述一个按钮、一段文字、一个列表应该出现在哪里、长什么样,Xcode 会实时把这段代码渲染成你能看到的界面。你不需要先学会 Swift 这门语言的全部语法——这正是交给 AI 的部分:你负责把想要的界面描述清楚,AI 负责把它翻译成 SwiftUI 代码。
AI 客户端怎么选
写 iOS App 有一点和写网页不一样:不少 AI 编程 IDE 是给网页项目设计的,能编辑文件,但不能直接帮你在 Xcode 里编译、跑模拟器——做 iOS App,Xcode 本身绕不开,AI 的角色是「帮你把 Swift 代码写出来」,最后跑起来还是靠 Xcode。基于这一点,有两条路可以走。
免费路径:打开一个免费的对话式 AI 网页(ChatGPT 免费版、Claude 免费版、Gemini 网页版免费版任选一个),或者直接用 Xcode 26 自带的免登录 ChatGPT 补全功能做局部小改动。注意:国内网络下,ChatGPT、Claude、Gemini 的网页版都需要海外网络才能打开,Xcode 内置的 ChatGPT 功能在国内网络下能否连上我没有实测;没有海外网络,就用国内可直连的对话式 AI(比如 DeepSeek 网页版)走同样的流程。把需求描述清楚,把返回的 Swift 代码整段复制粘贴进 Xcode。优点是零门槛、零花钱;缺点是每次报错都要自己把错误信息复制给 AI 看,来回沟通效率一般。
付费但值得考虑的路径:用类似 Claude Code、Codex 这类能直接读写你项目文件夹的终端 AI 工具,它能自己打开、修改 .swift 文件,甚至自己跑编译命令看报错再接着改,省掉大量复制粘贴的步骤。花多少钱:以 Claude Code 为例,包含在 Claude Pro(20 美元/月,按年付约合 17 美元/月)或 Claude Max(100 美元/月起)订阅里,也可以按 API 用量单独付费(claude.com/pricing,2026-09-07 查阅,价格可能调整,以官网为准)。为什么值:项目功能变多之后,省下来的复制粘贴时间会越来越可观。免费替代就是上面那条路径——先用免费的方式把第一个界面做出来,等你确认真的要往下做、功能开始变复杂,再考虑要不要升级。
这一章的示例全部用免费路径演示,跟着做不需要花钱。
完整提示词:让 AI 帮你写出第一个界面
- 打开 Xcode,选 Create New Project,平台选 iOS,模板选 App,项目名随便起(比如 KitchenConvert),Interface 选 SwiftUI,Language 选 Swift,选个你喜欢的位置保存。
- Xcode 会自动生成一个
ContentView.swift文件,里面已经有一段最简单的示例代码。把下面这段提示词发给你选好的 AI,把它返回的代码整段替换掉ContentView.swift里原来的内容:
我在用 Xcode 做一个 iOS App,界面用 SwiftUI 写。
这是一个「厨房单位换算器」:用户输入一个数字,选择原单位(克 / 毫升 / 勺 / 杯),
选择要换算到的目标单位,点一下按钮,下面显示换算结果。
请给我一个完整的 ContentView.swift 文件内容,要求:
1. 只用 SwiftUI 自带的组件(Form、Picker、TextField、Button、Text 就够),不要用任何第三方库。
2. 整个界面放在一个 NavigationStack 里,标题是"厨房换算器"。
3. 换算逻辑先写死几个简单的换算比例,不用做到精确,能跑起来、能看到结果变化就行。
4. 只返回代码,用一个 Swift 代码块,我会直接整段替换我项目里的 ContentView.swift。
- 把 AI 返回的代码整段粘贴进 Xcode 的
ContentView.swift,替换掉原来的内容,按 Command+S 保存。 - 在 Xcode 顶部的设备选择器里选一台模拟器(比如 iPhone 17 Pro),点左上角的三角形运行按钮,或者按 Command+R。第一次编译会慢一点,等模拟器窗口自己弹出来、界面出现,就是跑起来了。
标注「实测」:上面提示词描述的界面结构,写这篇文章时用等价的 SwiftUI 代码做了一次语法校验——用 swiftc -typecheck 对着当前 Xcode 自带的 iOS 模拟器 SDK 跑了一遍,没有报错,确认这类代码在当前 Xcode 版本下能正常通过编译检查。你的 AI 每次生成的代码细节会不同,真的跑不起来时看下一节的三种常见错误。
跑不起来的三种常见错误
错误一:多了一个 @main
新建项目时 Xcode 已经自动生成了一个带 @main 的 App 入口文件(通常叫 <项目名>App.swift)。如果 AI 生成的代码里又给了你一个新的 @main 结构体,编译会报类似「main 属性只能应用在一个类型上」的错误。处理办法:项目里只保留一个 @main,也就是 Xcode 自动生成的那个,AI 给你的代码只用来替换 ContentView.swift,不要整段替换掉 App 入口文件。
错误二:新文件没有勾选 Target Membership
如果你自己新建了一个 Swift 文件(而不是替换 Xcode 自动生成的那个),忘记在右侧文件检查器里勾选你的 App 作为 Target,这个文件里的代码不会被编译进 App,运行时会报「找不到某个类型」。处理办法:在左侧文件列表里选中这个文件,按 ⌥⌘1 打开右侧的文件检查器,在 Target Membership 里勾上你的项目名。
错误三:模拟器和项目的系统版本对不上
如果 Xcode 顶部选的模拟器系统版本比项目设置里的「最低支持版本」还低,运行会直接报错提示不兼容。处理办法:把顶部设备选择器换一台系统版本更高的模拟器,或者点左侧文件列表最上面的蓝色项目图标,选中你的 Target,在 General 标签页里把「Minimum Deployments」调低一点。
小结与下一步
到这里,Mac 上已经有一个能跑的空壳 App:Xcode 装好了、模拟器认识了、AI 帮你写出了第一个界面。下一章开始往里面加真正的功能——怎么把一个想法拆成 AI 能一次做对的任务,怎么用一份文件让 AI 在你关掉电脑之后还「记得」项目做到哪了。