第一次接触ios开发的我,花30min用cursor写了一个事件提醒app

5,981 阅读8分钟

1. 关于cursor

网上有太多关于cursor的介绍,这里不多做赘述。理解下来就是一个从vscode fork下来的IDE,集成了AI能力,可以直接以你的仓库(codebase)做为上下文来帮助你分析问题。

为什么不直接使用vscode插件?官网的回答说做为一个独立的app,需要有更强的对UI的操作能力,还有某些功能,使用插件是没办法实现的,属于倒反天罡了是。

官网:www.cursor.com/

目前支持的模型有下面这些:

费用方面可以使用免费的两个星期适用,或者包月(20刀),包年,也可以对接自己的api key。

2. 新建一个xcode工程

这里与体验cursor也无关,稍微学习了xcode的操作流程,新建了一个xcode(swift)的工程,官方文档在这里:creating an xcode project

3. 用cursor打开工程

操作方式和vscode一致,没啥可说的。

4. 打开prompt进行对话

在mac上,我是cmd + shift + L, 打开了对话框,有这么几个部份:

左上角是选择context,就是针对哪个文件,通常来说呢,这个会默认设置为你在IDE中光标所在的文件。

左下角是选择模型,metion中可以选择想要引用的git commit信息,文件,目录或者代码块(感觉是精确的提供上下文?),还能上传图片提供上下文。

右下角就是行为按钮,回车确定啥的。

5. 了解项目的基本结构

对工程一问三不知的我不知道先从哪下手,因为我看项目中有两个swift文件,于是我直接问了两个问题:

what does this file do ? what is the relationship between contentView.swift and this file?(此时对话框显示的上下文是test123App.swift)

以下是他的回答:

得知两个文件一个管逻辑 一个管视图。

下一个问题我直接问它:

我想要创建一个app,应该先改动哪个文件?

6. 开始用大白话来描述我的需求:

帮我在应用的上面生成一个可以多选的时间选择器,每当我选中一个时间的时候,下面会有一个scrolllist,scrolllist中展示选中的时间

它的回复会直接告诉你应该改哪个文件,在代码块的右上角,可以直接copy,apply或者ask。ask的话就是针对代码块直接提问,当选择apply的时候,代码会直接在指定的位置进行diff比较,UI界面像是在看git diff一样,告诉你哪里进行了修改,当点击Accept的话,代码将进行修改, 并且还会在最后附加上对代码的解释。

此时我直接选择accept并保存,在xcode中将项目运行起来:

现在只要我用上面的选择器,每次我滚动并停到一个时间,下面列表就多了一个时间。

我接着提:

还要能选日期,并且增加一个“确定”按钮

此时的交互就是点击【选择时间】之后,进入滚轮选择时间,点击【确定】之后,下方列表会多个时间项。

我接着说:

然后我希望能够给这些时间增加到提醒里

代码修改如下:模拟器重新build之后,会出现提醒的授权。

我接着问,这里我合并了两次提问如下:

每个添加的时间还要能单独删除 

这里我还想要给每个通知修改对应的通知消息内容

从UI上看,基本已经满足了我想要的所有内容。包括了:

  1. 选择日期时间
  2. 输入提醒内容
  3. 查看所有提醒详情
  4. 编辑每条提醒的内容

7. 让他debug项目

此时交互上没问题了,也弹出了提醒授权,但是当我在手机上运行的时候发现,设置到某个时间点的时候,手机的提醒并没有弹出来,于是我直接就问他:

为什么时间到了 还是没提醒?

此时的cursor,居然增加了一些调试代码,并对原因作出猜测还对调试代码做出了解释:

我对代码进行修改(其实就是点了下accept再保存),在xcode中将输出的log再次问cursor:

我在手机上进行调试,为什么输出的是Notification scheduled for 2024-09-14 08:04:09 +0000 with message:,然而现在的时间是16:00

以下是他的回答:是因为时区导致的问题

我尝试运行,但是还是没有提醒,我又将更全的日志打印反问他:

日志输出是这些:
Notification permission granted.
Notification scheduled for 2024-09-14 16:05:32 +0800 with message:
2024-09-14 16:05:43.199871+0800 test123[1472:409339] Metal API Validation Enabled
Notification scheduled for 2024-09-14 16:06:32 +0800 with message: 哈哈哈
Notification scheduled for 2024-09-14 16:08:32 +0800 with message: 卡卡
但是还是没有提醒是为什么

但我accept它的修改之后,能看出来加了一个前台提醒的实现。

当我运行起应用的时候,发现它已经可以实现完整的“事件提醒”功能了。

8. 景上添花的修改

我想将ios的提醒声音换一下,我接着问:

我能够在应用中切换其他的提醒声音么

cursor给了我如何将app的声音自定义的步骤,以及代码的修改。

由于我不知道该怎么往xcode项目中添加自定义音频,我接着问他:

如何给项目添加自定义声音?

按照它的流程,我成功的将一个wav音频放到了项目中。

UI有点丑,我又和他说到:

UI有点丑,随便修改修改让他看起来更像一个成熟的产品

好像目前所有的内容都在上半屏幕中的一个scrollview中了,调整一下

最终app的呈现如下:

9. 感想

或许你对最终的这个劣质的app感到不屑,但是我此时却是十分的震惊,简单的三言两语就能够实现这样的一个app,并且还能在它的帮助下进行调试,甚至一些工程化的问题它也能帮你解决。

你也可以将它作为一个学习工具,去学习新的框架新的技术,因为整个prompt的流程也能够回溯,回到某个时间点的代码片段,或者针对某一次的回答进行深度解读。