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