学习半年 SwiftUI,我上架了第一款 App:OnceOne
7月 8, 2025
最近半年的时间里,我利用业余时间开始学习 SwiftUI 的一些概念,边学习边实践,开发出了一款 To-Do 工具:OnceOne。其中前期做 To-Do 类 App 的通用功能时还多有模仿其他典型 App 的交互和展示方案,后面逐渐有了一些自己的想法,开始做了一些属于我自己的独特功能。到现在终于在 App Store 上架了第一款作品,还有点小激动。
本篇即为记录一下 OnceOne 的开发历程和介绍一些我自己认为的亮点功能,即 OnceOne 有什么特别之处,2025 年了我为什么还要开发一款 To-Do App。
开发历程 #
总得来看,这款看似简单的 To-Do App,我花了长达半年的业余时间,并不像网上常见的“一周开发一款 App”那样简单。尤其是在初期,我面对大量的陌生概念,经常理不出头绪,不知从何下手。
个人体感,苹果 iOS 的开发和后端前端技术做起来还是不太一样,iOS 给我的最强烈感觉,就像一个庞大的乐高积木乐园,你早就知道通过上万块积木的拼接,最终肯定会搭建成一架飞机或跑车,但是乐趣也是难点就在于,每一块选什么积木。这需要你在前期大量认识一些积木,了解它们的名称、用途、特点、使用场景。你可能会一直陷在“应该有一些能用的积木我还不认识”的恐慌之中,而不是利用已经知道的积木快速搭建模型,而我就在这两种状态中来回横跳,尤其是这半年来几乎每天都在认识新的积木,那么有一些旧有的方案可能就又要被重写,这些应该就是前期学习、开发过程中最大的折磨。
从效率上面讲,我对自己已经很满意了,因为基本还是靠业余时间,为了写 App,我还放弃了每个周末出去打乒乓球比赛的习惯,所以大部分的周末都会围绕 App 开发来转,就这样持续了半年时间,按照全职工作时长也可以算作两三个月吧,从工作量上面来说,我觉得算是合理的,而且开发初期也浪费了比较多的时间在不重要的细节上面。唯一的问题就是半年的业余时间前后跨度还是太长了。
满意的开发效率其实还离不开 Windsurf 和 DeepSeek 等 AI 工具的帮助,它们显著加快了我学习新知识,解决疑难 Bug 的效率,如果放在以前,我可能会反复钻研文档、重开测试项目复现问题、归纳底层原因等等传统方式,但是现在一般是 Windsurf 扫描一遍代码,就可以提出可能不合理的地方,并且给出我还没听说过的新的解决方案,我又可以快速学习,如此正向循环,直接解决问题。

尤其是最开始的两个月,我对这种开发体验非常之兴奋,晚上不想睡觉、早上想快速起床接着写。但是后来随着项目复杂度显著增加,逐渐开始遇到新的问题,我的开发进度也开始趋于平缓,心态逐渐和以往的开发状态一样趋于平淡,变成了日拱一卒。因此随着第一个 App 的上架,我也总结了一下,在一些背景知识概念熟悉的状态下,三个月确实是一款个人软件 Startup 的最长周期,因为超过这个时间,大脑的兴奋点逐渐降低,日常生活逐渐回归到以前,不会像初期一样投入大量的时间进行实践和思考。
功能介绍 #
众所周知这种 To-Do 待办工具非常多,也是所谓独立开发者的“三件套”之一。但是我并没有单纯的做一个和大家一样的 To-Do 工具,我结合了自己的使用需求,着重开发了任务状态、过滤器、活动记录这几个功能。
任务状态 #
首先任务的列表几乎是每个 To-Do App 都通用的,但是 OnceOne 任务列表的特点是:加入了任务状态的概念,即未完成的任务也有三种状态:未计划、即将到期、已到期。在一个列表中,用户可能最关注的就是已经到期的有哪些任务,因为这些是优先级最高的。其次,用户可能需要关注一下未来即将到期的任务。那么通过下图这样的三个顶部按钮进行快速区分,可以省去用户频繁切换页面的烦恼,切换页面意味着操作复杂度增高,而且还可能会打断用户使用时的专注状态。

过滤器 #
过滤器本身也不是一个新概念,很多 App 也有这个功能。但是 OnceOne 的过滤器可以说是目前市面上提供的最全面的过滤器之一,而且目前没有添加任何付费限制。很多其他的 App 的过滤器可能只是简单的过滤一下标签、时间、优先级。但是在 OnceOne 中,除了标签、时间范围、优先级,还加入了项目、关键词、专注状态、可重复状态、任务状态,并且列表内容不止任务类型,还可以展示活动记录。比如时间范围选项,OnceOne 就提供了超多的可选项,相信总有用户需要的场景,并且用户还可以创建过滤器组,并把多个过滤器列表分到一个组中轻松管理。



活动记录 #
至于活动记录,很多其他的 To-Do App 并没有这个概念,OnceOne 也是结合了自己的生活场景,比如需要经常关注自己每天的喝水记录、站立记录,甚至上厕所时间、起床时间等等,有了过滤器功能和活动记录的展示形式,用户现在完全可以将所有相关的记录整理到一个列表下面进行浏览,这样就可以清晰地回顾自己一天生活的点点滴滴。



OnceOne 还提供了一个专门的活动页面,来展示所有未经过滤的活动,用户可以直接查看自己当天、当周、甚至查询过去任何一天的活动记录。
无服务器 #
OnceOne 本身并没有提供任何服务器,用户创建的数据只保留在自己的设备上,并且可以通过用户的 iCloud 账户在多设备间实现快速同步。也就是说用户完全可以离线使用,当有网络连接的时候,OnceOne 通过 Apple 提供的 iCloud 底层支持进行数据同步。这个特性满足了一部分用户对个人隐私的需求,希望自己的数据不保存在第三方账户里,当下一些主流的 To-Do App 都需要用户创建额外的账户,而支持 iCloud 同步的 App 又很少提供过滤器、活动记录等复杂功能。
其他功能 #
其他比如标签和项目管理,基本都是很多 To-Do App 标配的任务分类功能,此外 OnceOne 目前还提供了简单的统计图表,未来还会继续更新提供更多的图表以方便用户进行效率分析。
Apple 全平台 #
基于 SwiftUI 的优势,OnceOne 的目标是可以在 Apple 的全部生态中上架。目前已经上架了 iOS,iPhone 和 iPad 端可以正常使用,macOS 端正在加紧开发中。
结束语 #
通过结合使用任务列表、过滤器、活动记录等功能,OnceOne 可以为用户带来很多个性化玩法,这就需要用户自己去探索发现,也许就不是简单的 To-Do App 了。
而我作为开发者,第一个 App 算是一个里程碑,这个过程中也产生了很多奇特想法,也将尝试更多基于 Apple 生态的开发。