Maples7 个人开源计划(10)
时间飞逝,上一次写《个人开源计划》还是上次(不是),这期间也发生了不少事情,趁着年底把这小半年的事情来回顾记录一下。
🧑🏻💻 工作
- BeanLedger App:
- 从今年夏天发布以来,一共发布了 24 个版本,基本实现了当初做这个 App 的功能设计目标。
- 唯一一个想做但还未实现的大功能是对不同大类/小类投资品种的比例的呈现,但这个功能如果不能自动更新资产数据,会大大加重用户的数据维护负担,目前看比较难跟现有功能整合得比较好。准备明年做一个新的 App 来满足我自己这方面的需求。
- 现在总结下来,使用 SwiftData 作为本地数据框架是做这个 App 最大的选型失败,极大地阻碍了需要改动数据模型的新功能的实现。粗略估计,我开发过程中遇到的 80% 以上的问题(甚至是上线后的崩溃)都是这个官方框架带来的。SwiftData 在发布时其实有不错的顶层设计和概念,如果只是粗浅的使用也不大会感受到问题。但一旦数据模型变得复杂,并且需要开启 iCloud 数据自动同步功能后,所有的潜在问题都冒出来了,这对于功能都在本地运行的 App 几乎是处处踩坑。我不想过多地揣测我不知道的事情,但从 SwiftData 在不同版本之间不稳定的表现和很多明显缺失的基础功能来看,我只能理解为具体实现这个框架的团队技术能力有限,根本没有用心,大概率也是苹果内部团队在屎山代码上雕花的产出。明年会认真看看是不是能迁移到几个月前 Point-Free 团队刚发布的 SQLiteData 框架上,但已经上线的产品的数据迁移也不是一件轻松的事情,一不小心就可能会造成用户数据丢失,需要加倍谨慎。所以在迁移之前,会先实现数据导出/备份的功能。