0

我有一个带有两NSDate列的表的 sqlite 后端的 coreData:eventStart 和 eventEnd。我想执行一个相当复杂的选择并对其进行排序。

对于应用程序中的主要显示之一,我想检索两件事:

  1. 10 个持续时间 (eventEnd - eventStart) 小于指定值的事件
  2. 10 个持续时间大于指定值的事件
  3. 事件必须根据它们与指定值的距离正确排序

我马上遇到的两个问题是我找不到从表达式中选择列的方法(日期计算)。第二个NSSortDescriptor似乎只适用于列,而不适用于表达式。这与 SQLite 的工作方式相反,我想知道分解原始 SQL 是否更容易。

我应该提到,我将要使用的数据太大而无法放入内存中以进行排序等操作,尤其是因为排序是在表达式上,因此查询必须返回所有数据进行排序。

4

2 回答 2

1

如果您首先获取对象,那么您应该能够使用您想要的任何键对内存中的结果进行排序,包括返回您提到的间隔的方法。因此,您将使用返回此时间间隔的方法名称创建一个 NSSortDescriptor,用它创建一个新数组,然后只需调用

[originalFetchedArray sortedArrayUsingDescriptors:sortDescriptors];

这将返回一个新的排序数组。如果您从 NSMutableArray 开始,则可以使用类似的方法对其进行排序。

于 2012-12-27T19:26:09.970 回答
0

When I had a very similar problem, I just created a new column for the calculated value (in your case it will be duration). After that, the retrieval becomes trivial.

于 2012-12-27T17:55:08.363 回答