在我的项目中使用 Core Data 时,我需要编写一个原生 SQL 查询。我真的需要这样做,因为我现在正在使用NSPredicate
它并且效率不够高(仅在一种情况下)。我只需要编写几个子查询和连接来获取大量行并按特殊字段对它们进行排序。特别是,我需要按其子实体的值总和对其进行排序。现在我正在使用 NSPredicate 获取所有内容,然后手动对结果(数组)进行排序,但这需要很长时间,因为有成千上万的结果。
如果我错了,请纠正我,但我很确定这不会是一个巨大的挑战,因为有一种在 iOS 应用程序中使用 sqlite 的方法。
如果有人能引导我走向正确的方向,那就太棒了。提前致谢。
编辑: 让我解释一下我在做什么。这是我的 Coredata 模型:
这是我的结果在 iPad 上的样子:
我展示了一个表格,其中每个客户都有一行,其中每个客户都有他从 2012 年 1 月到 2012 年 6 月(最后)和 2013 年(当前)的销售额。旁边是Curr
这两个值之间的差异。毛利率和覆盖率也是如此。
每个客户都保存在Kunde
表中,每个客户Kunde
都有几个PbsRow
s。PbsRow
实际上持有每月销售额的总和。
因此,为了显示这些结果,我正在做的是获取PbsRows
2013 年 1 月至 2013 年 6 月之间的所有数据,然后执行以下操作:
self.kunden = [NSMutableOrderedSet orderedSetWithArray:[pbsRows valueForKeyPath:@"kunde"]];
现在我的所有客户 (Kunde) 都有 2013 年 1 月到 2013 年 6 月之间的记录。然后我使用 for 循环来计算每个客户的总和。
这个想法是获取当年的销售额并将它们与去年进行比较。坏事是有很多客户,而且for
-loop 只需要很长时间:-(