从0到1,不会编程的我用ChatGPT写了一个地震报警App。
2015 2008年,我还在上大学的时候买了一部。 iPhone 5c。是的,就是那个很漂亮的聚碳酸酯机壳手机。
同一年,我在网上看到了几个学校,并发了一篇关于它的文章 VSCO app 感受文章。就是现在看来很年轻的那篇短文,让我不断感受到各种各样的东西。 iOS 应用程序,写出一篇又一篇的文章 app 感受文章。
我从没想过,在过去的十年里,我有机会在业余时间自己写作。 iOS app,而且发布到 App Store 上。
ChatGPT 问世:神奇 AI 在哪里
2022 年 11 月,ChatGPT 出现了,引起了全世界的关注。在过去的两年里,生成式 AI 发展迅速,从模型层到网络层,都取得了长足的进步。
大多数读者应该已经感受到了 ChatGPT,或其它类似的生成式 AI 商品。甚至,你也许不局限于和和。 AI 聊天,而是在工作中使用 AI 辅助性工具,提高工作效率。我相信这一技术注定会给人类带来巨大的变化。和 AI 在这个时代,合作可能是一项基本技能。
在过去的两年里,我一直在跟踪。 AI 能力的发展。激动,理性,失望,惊喜,各种情感交织在一起。每一个新模型出现,都会经历一轮,「啊,它竟能做到这一点!」 和 「哎呀,还能不行。」 心路历程。

AI 发展观察者的情绪周期(由 Claude 绘制)
直到几个月前,Claude 3 Sonnet 模型发布(目前已升级到 3.5 Sonnet),使我意识到其中的巨大潜力。我要试着挑战一下,看看 AI 能不能帮我完成一件我一直想做的事? - 开发一款 iOS App。

Claude 比较模型能力
iOS 开发「新手」:一拍脑门,决定进坑
虽然我一直在关注这些年, iOS 应用程序,但仅仅停留在使用方面。对我来说 iOS 了解开发,几乎一无所知。也许我听说过。 Objective-C 和 Swift,知道有 Xcode 开发工具。

Xcode 和 Swift
几年前,由于学习和后期工作的原因,我学到了。 Python。到目前为止,我的能力还没有达到专业水平 Python 工程师水平。当然,我可以写一些简单的剧本来解决工作中的一些问题,对数据库、网络请求等基本概念有一定的了解,有一定程度的编程思维。
所以,想要开发一个模型 iOS app,首先,我需要选择一个主题,也就是我想做什么。 app。最终,我把目标锁定在做一个可以查看地震信息的地方。 app(之后称为“震感”)。
你们也应该看到,选择这个主题,完全是一拍脑门的决定。
在日常生活中,我会关注地震新闻。 2008 2008年地震的经历者,我对地震特别敏感。虽然不是每次地震都会影响我,但我还是会习惯性地看看最近哪里发生了地震。现有地震信息 app 要不是太丑,要不是太大太夸张,我早就抱怨过了。
编码前:找出目标,确定框架
在初步确定目标之后,并不意味着我可以开始编写代码。主要是我也不会写。首先,我需要解决一些基本问题:
- 开发一款 iOS 应用程序,选择哪些编程语言?
- 为了开发,我需要下载哪些软件,如何开始?
- App 界面设计,我需要什么页面,如何设计?
- 估算时间成本,我自己能接受的最大时间投入?
- App 如何提交发布 App Store?
当然,除了这些明显的问题,还有很多小问题不会一一列举。所以,我通过询问 AI 查询资料的方法,大致得出一些结论:
我打算使用 Apple 推荐的 SwiftUI 来开发一款纯原生的 iOS app,不要使用第三方框架,尽量减少依赖。而且方便 AI 可以尽可能的利用好 Apple 官方文档。
我需要下载 Xcode,这是 Apple 正式提供的开发工具。
我需要参照 Apple 提供的人机界面指南,尽量使用原生控件,省去界面设计。
我可以接受累计投资 1 一个月的周末来完成这个项目。
每年我都要付钱 688 元来开通 Apple Developer 帐号,这是提交 app 到 App Store 前提条件。
迈出第一步:理清思路,从零开始。
我注册好 Apple Developer 帐号,安装 Xcode。在面对第一个问题的时候,我该如何开始?
我对 iOS app 对项目结构、代码组织等一无所知。所以,我要求 Claude 帮助我生成一个 Hello World(面向初学者的编程项目) SwiftUI 项目,并循序渐进地指导我运行。虽然我不明白 SwiftUI 代码,但是它运行成功。
下一步,我放弃 Claude 讲述了一遍 SwiftUI 项目结构。例如 iOS app 图标应该放在哪里,页面是如何组织的,需要什么基本配置等等。经过多轮对话,我对一个有了初步的了解。 iOS app 基本结构。

最简单的一个 iOS App 构造
深入细节:与 AI 手牵手
和 AI 合作开发 iOS app,这是一件不容易的事。假设你直接对它说:请帮我开发一条地震信息 app。
毫无疑问,它会给你一个肿块 shit 代码,然后告诉你:完成。
所以,你需要一步一步地引导它,让它帮助你解决一些具体的问题,例如从创造出来。 app 提炼到创建一个新的页面,提炼到在页面中显示一个目录,然后提炼到这个列表的风格。实现的过程是从最小粒度反过来开始的。
只需细化问题,AI 只有这样才能真正帮助你。当然,细化问题的过程,你也可以 AI 共同完成。完美的闭环。
比如,震动 app 主界面,主体为背景地图和地震事件目录。

震动 App 主页面
你首先需要 Claude 帮助您建立主页,并显示地图。您的提示可能是:
请在 App 地图必须在主界面上显示, iOS 原始部件,使用 SwiftUI 语法。代码文件路径和代码的完整内容需要导出或修改。
拿到 AI 在输出之后,你需要复制它 Xcode 运行项目,看效果。例如,您可能在界面上看到地图,但只是一个局部区域,此时可能需要继续对话:
在不包括任何界限的情况下,我希望地图占据整个屏幕。在对代码进行仔细分析后,再次导出修改后的完整代码。
更加糟糕的是,代码可能无法运行,这个时候最好的办法就是 Xcode 复制报错信息 AI,让它帮助你分析问题。
上面的代码是 Xcode 报告错误,请分析错误原因,再次导出修改后的完整代码。
总之,和 AI 开发一个真正的模型 app,尽管听起来很帅,但实际上你需要有能力和足够的耐心去解决复杂的问题。因为 AI 如果你不能完成一个广泛的任务,你只能完成一个小的子任务。一个小功能通常需要结合实际情况进行多轮对话。
面对困难:引入外力,架起后端
因此,在 AI 在我的帮助下,我逐渐建立起振动 app 基本外观。例如,地震目录、地震数据详细页面、数据分析页面、设置界面等,包括示例数据。

震动 App 详细页面,数据洞察页面,设置界面
转过头来,我发现自己之前做出的决定并不是一个好的选择。因为震动 app 并非一个完全在当地运行的人。 app,这样就需要获得实时的地震数据,这就需要一个后端服务来提供数据。对我来说,这个 iOS 对于开发小白来说,是一个巨大的挑战。
提到后端服务,你可能会想到云主机、数据库、API 接口等等。那是另一个巨大的领域。所以,我逐渐走向 AI 寻求解决方案。
「无服务器」,这是 Claude 给我一个答案。得益于云计算的发展,大多数云服务提供商可以帮助您建立后端服务、存储数据、提供后端接口、推送消息队列等。这样,你就不需要自己建造和维护云主机,也不需要学习复杂的后端开发知识。最重要的是成本低,甚至有免费的选择。
于是,我开始了解 Cloudflare 提供各种无服务器商品,如 Workers、KV、D1、Queue 等等。我查询资料,询问资料, AI,对这些商品的基本概念和使用方法有了逐步的了解。最终产生振动 app 整个后端结构。

震动 app 后端结构示意图
解决问题:和 AI 并肩
在与 AI 在合作开发中,最常见的体验就是一段码报错一直无法处理,一个功能无法按预期实现,导致你无法继续。
这个时候,我会推荐你尝试两种方法:
第一,借助传统的搜索引擎,查询相关问题,查询更新的文档和资料。接着,将这些新知识输入 AI 其中,更新其知识库。大多数生产模型训练数据的截止日期都不是很新,所以你需要有针对性地更新它的知识库,这样它才能更好地帮助你。
比如,Claude 提供了 Project 功能。您可以将获得的文档上传到 Project 中,AI 根据这些文件自动进行学习,提供更精确的解决方案。

Claude Project 产品截图(来自官网)
我更推荐的另一种方法是尝试改变身份和 AI 进行对话。许多人和 AI 在一起敲代码的时候,你的身份就是「产品经理」,AI 是「研发工程师」。例如,你的对话是:
我希望 App 地震列表页面,可以显示最新的地震数据,同时支持下拉刷新。请帮助我实现这一功能。
如果 AI 这个功能不能正确实现,你的问题可能是:
数据显示和下拉刷新功能存在问题,不能正常使用。请帮助我分析问题,并提供解决方案。
但是上面的对话也许不能很好地解决问题。
在这个时候,你可以试着改变你的身份,成为一名测试工程师, AI 共同分析问题。例如,你可以这样做。 AI 对话:
我发现最新的地震数据无法显示在地震目录页面上,也无法下拉刷新。请找到相应的代码并添加详细的日志信息。测试结束后我会给你反馈。
下一步,你可以做到 Xcode 再一次反馈中日志导出。 AI,你会发现 AI 解决问题的效率将大大提高。 这时,我们又回到了文章前面讨论的结论,AI 适用于特定问题的处理,而不适用于广泛的任务。 你需要将 AI 把它当作机器,而非人类。
项目迭代:让 AI 晋升「产品经理」
当你在 AI 在最小版本的帮助下完成。 app 之后(例如只有一个主要功能),你可以把整个项目当作一个项目,使用它。 AI 来帮你迭代。我们试着在这一过程中 AI 每一次谈话都会体会到项目的全貌,此时此刻 Claude 的 Project 这个功能又一次发挥了作用。
你可以在 Claude 的 Project 把整个工程代码上传到中间,让 AI 了解整个项目的结构和功能。因此,AI 通过随后的对话,可以更好地帮助你迭代。

震动 app 的 Claude Project 配备截图
例如,在我上面的实际配置中,我会 Xcode 尽量将项目文件全部上传 Claude Project 中间。同时编辑好 Custom Instructions,在里面写下整个项目的目录结构和基本描述。就这样,AI 通过随后的对话,我们将了解整个项目的基本信息和完整结构。
在这一过程中,你可以 tree 指令在 Terminal 在整个项目的目录结构中生成,然后将其复制到 Custom Instructions 中。

使用 tree 指令导出目录结构
另外,我建议你学会使用它。 Git 对整个项目的代码进行管理。每次迭代后,您可以将代码提交给 Git 仓库,然后将最新代码上传到仓库。 Claude 的 Project 中。Claude 这位官员还通知了后续 Project 功能升级,将支持直接跟随。 Git 集成仓库,这样你就能更方便地管理整个项目。

Claude Project 集成 GitHub(来自官网)
震动 app 总的来说,我花了大约 50 一小时后,完成了第一个版本,时间投入低于我的预期。
我将 app 递交到了 App Store ,并且最后通过了审批。随后,我又陆续花了一些业余时间。 app 迭代,包括支持世界上更多国家和地区的官方数据库,覆盖更多的本土化语言,支持更多的本土化语言 macOS 和 iPadOS、支持 Critial Alerts 特点等。

macOS 版本震动 app
AI 除外:从第一个到下一个。
随着震动 app 最终验证了我最初的目标:2024 年 AI,能帮助一个完全不懂的人。 iOS 开发者,开发一个能初步发展的人「合格」的 iOS app。
当然,这个句子并不意味着「AI 可以让任何人都成为 iOS 开发者」。以我为样本,能完成这个项目,除了 AI 除了强大之外,还有以下几个因素:
在过去的几年里,因为我感觉到了很多。 iOS app。所以,我可以一开始就在脑海中建立起一个 app 基本外观,包括哪些页面,哪些功能,交互技术等等。
我有一定的东西 Python 编程基础,对编程有一定的了解。虽然我不会写。 Swift,但是我知道编程的基本概念,知道如何找到信息,如何更容易地解决问题。
所以,我不想扔掉「AI 可以让任何人变成 iOS 开发者」或是「每个人都赶紧去用 AI 写 app 吧」这种噱头。AI 其他一些看不见的因素,也是非常重要的。当然,我也期待和相信, AI 随着技术的发展,未来真正对编程一无所知的人可以通过 AI 完成自己的 app 创意。
震动 app 第一个月上架后在国外突破 100 美元的销售额,收回了 Apple Developer 帐户注册费,这对我来说是个意想不到的惊喜。100 美元的收入对我来说并不重要,但是乐趣和成就感是无法用金钱来衡量的。
现在,我在业余时间继续更新迭代振动。 app,并且投入到下一个今昔 app(第一版已经上架) 开发过程中。我希望借助 AI,把我个人以前的一些奇怪想法,变成现实,遇见世界上和我有同样需要的人。
最后,欢迎大家评论 论区探讨 AI 开发的话题和你的经验。接下来,我会继续在少数学校分享我的下一个。 iOS app 今前的R&D故事和 AI 编程经 验。
原文链接:
https://sspai.com/post/91860?utm_source=wechat&utm_medium=social
本文来自微信微信官方账号 “少数派”(ID:sspaime),作者:huhuhang,36氪经授权发布。
本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com




