做了个给爸妈用的血压记录 App,顺带聊聊 SwiftData + 多档案的实现思路

我爸有高血压,吃降压药已经好几年了。每次陪他去复诊,医生问「最近血压怎么样」,他就从口袋里掏出一个皱巴巴的小本子,上面是密密麻麻的数字,日期写得歪歪扭扭。医生翻了两页,说「看不太清楚」,最后还是自己重新量了一次,那本本子基本没起到什么作用。

我当时就在想,这事儿不该这么难。


痛点很具体:记录麻烦,医生也看不懂

我试过帮他装过两三款健康 App,结论是:大多数都死在「录入」这一步。打开 App、找到入口、点击数字键盘、输入 130、切换下一个、输入 85、再输脉搏……老年人操作一遍至少要一分钟,有时候还会不小心关掉。坚持不了三天就放弃了。

另一个问题是数据格式。就算坚持记下来了,医生也不一定有时间帮你翻手机。手机屏幕递给医生,医生要一条一条滚着看——说实话,这事儿挺尴尬的。

所以我做「健康手账」这个 App,核心要解决两件事:录入要快给医生看的数据要有格式


拨轮录入:能少点一下就少点一下

录入交互我试了好几个方案。数字键盘最直觉,但步骤太多;滑动条精度不够,血压差一两个毫米汞柱很难控制;最后选了 iOS 原生的拨轮(Picker with .wheel style),配合物理阻尼感,上下转动到对应数值,体感上很接近机械操作。

实测下来,录入一次血压(收缩压 + 舒张压 + 脉搏)大概 10 秒以内,我爸用了一周之后说「这个还行,不麻烦」——这句话在他那已经算很高的评价了。


数据模型:SwiftData 做本地存储

技术上,整个 App 的数据层用的是 SwiftData,iOS 17 之后苹果推的新持久化框架,声明式写法比 CoreData 简洁很多。HealthRecord 是核心模型,大概长这样:

@Model
final class HealthRecord {
    var id: UUID
    var timestamp: Date
    var systolic:  Int?     // 收缩压
    var diastolic: Int?     // 舒张压
    var pulse:     Int?     // 脉搏
    var weight:    Double?  // 体重
    var tagIDs:    [String] // 关联的状态印章
    var profileID: String   // 多档案隔离
}

profileID 这个字段是后来加的。最开始只考虑单人使用,后来想到我要同时帮我爸和我妈记录,两个人的数据得分开,就加了多档案支持。每个档案有独立的 profileID,查询时按这个字段过滤,互不干扰。

数据全部存在本地,没有服务器,可选开启 iCloud 同步(通过 CloudKit,ModelConfiguration 里配置 cloudKitDatabase: .automatic)。对慢病用户来说,数据不上传这件事本身就是一个卖点——很多人不放心把血压数据传给第三方。


状态印章:干预行为和数据关联

光记数字不够。血压高的那天,是因为前一天运动了、还是喝酒了、还是睡眠差?这些「干预行为」如果没有记录,事后很难分析。

所以加了「状态印章」功能:每次录入时可以顺手打上标签——吃了降压药、做了运动、喝了咖啡、睡眠好之类的。这些标签存在 tagIDs 字段里,和 HealthRecord 关联。趋势图上可以叠加这些标签,比如看「有运动的那天,血压是不是普遍低一点」。

默认预置了几个常用标签(pill/降压药exercise/运动sleep/好睡眠 等),用户也可以自定义。


PDF 就医报告:解决「医生看不懂」

这个功能我觉得是整个 App 里最实用的,但同类免费工具里几乎没有做的。

一键导出标准格式的 PDF,包含:时间段内的所有血压/体重记录、趋势折线图、异常标注、状态印章统计。A4 纸打印出来,或者直接在手机上展示给医生看,格式清楚,医生一眼能看出这段时间的控制情况。

上次陪我爸复诊,我把 PDF 导出来直接递给医生,医生翻了大概 20 秒,说「控制得还可以,这一周血压偏高,是不是吃咸了」——这一次交流比之前有效多了。


Siri 快捷指令:低频但有用

做了个 AppIntent,用户说「用健康手账记录健康数据」可以直接唤起录入面板,不用从桌面找图标。老年人记不住这个也没关系,但对习惯用 Siri 的用户来说还挺方便。


几个取舍

买断制,不做订阅。对需要长期使用的慢病用户,按月收费这事儿我自己都觉得别扭——你不可能让一个高血压患者「取消订阅之后就不记录血压了」。一次买断 Pro,长期用,逻辑更顺。

鸿蒙版同步在做,用 ArkUI 重写了核心录入和趋势图部分,主要是想覆盖用华为手机的老年用户群体,这部分比例其实不小。

暂时没有社交功能、没有排行榜、没有打卡分享。健康数据是很私密的东西,我不想把它做成社区产品。


App Store 搜索「健康手账」,或者直接:https://apps.apple.com/app/id6761605717

刚上线,版本 1.0,有问题欢迎在评论区说,我看到了都会回。

posted @ 2026-04-23 17:38  samexxx  阅读(20)  评论(0)    收藏  举报