SwiftData|使用 ModelActor 存在数据更新延迟问题
问题案例
在 MONO 记账中,在账单详情页面修改账单的报销状态:待报销或已报销。修改之后,报销统计数据无法正确及时的更新(有时更新,有时不更新,结果不可测)。
排查发现原因如下:
1. 在 ReimbursementView 组件中,更新报销状态时只使用 Picker 组件,未显式调用 modelContext.save() 进行手动保存。
2. 统计数据在 ReimbursementViewModel 中计算,通过调用 actor 中的方法进行计算。
和 Task.detach 无关
既然在 ReimbursementViewModel 中,通过 Task.detached 在后台调用 actor 方法执行计算任务。如果不使用 Task.detached ,该问题是否仍然存在?
经过测试,即使修改为 Task,