我有一个概念 sql 查询,它在核心数据表 t 上使用 group by,如下所示:
select a, b, sum(c) c_sum from t group by a, b;
使用核心数据,我可以运行查询(如使用核心数据的线程GROUP BY 和 SUM() 中所述)。我想使用 NSFetchedResultsController。我尝试了以下方法:
在我的“刷新”操作中,我尝试直接使用与上述group by query对应的获取请求,但遇到了“NSFetchedResultsController不支持NSDictionaryResultType的更改跟踪和获取请求”的问题。
然后我想到了以下内容。将记录保存在表 t 中。然后运行上述查询并将结果保存在另一个表 t1 中。将 nsfetchedresultscontroller 绑定到从 t1 进行的常规提取。不幸的是,在这种情况下,我遇到了 group by 查询在数据库中看不到任何内容的问题,因为文档保存操作是异步的。
为了解决上述问题,我尝试在插入表 t 后立即保存文档 - 但随后出现错误“此 NSPersistentStoreCoordinator 没有持久存储。它无法执行保存操作。”
显而易见的替代方法是我以编程方式进行分组和求和,然后将数据插入 t1 但我想我会在这里询问其他人是否有任何想法。我还没有尝试过的第二个是收听文档保存通知,然后插入 t1。另一种选择是不使用 nsfetchedresultscontroller - 我想避免。
想法?
谢谢!
更新:可以检测保存通知,然后使用分组查询从 t 填充 t1,但这不是一个好的解决方案,因为:1. 我是保存操作发生时的摆布 2. 每次保存时,都会重新填充表这显然不是一个好主意。