我有一个带有sqlite后端的coreData,其中包含两个NSDate
列:eventStart和eventEnd。我想对它进行相当复杂的选择和排序。
对于应用程序中的一个主要显示器,我想检索两件事:
我立即遇到的两个问题是我无法找到一种方法从表达式中选择一列(日期计算)。第二个是NSSortDescriptor
似乎只适用于列,而不是表达式。这与SQLite的工作方式相反,我想知道是否更容易打破原始SQL。
我应该提一下,我将要处理的数据太大而无法放入内存中进行排序,尤其是因为排序是在表达式上,查询必须返回所有数据以进行排序。
答案 0 :(得分:1)
如果您首先获取对象,则应该能够使用所需的任何键对结果进行排序,包括返回您提到的间隔的方法。因此,您将使用返回此时间间隔的方法名称创建NSSortDescriptor,使用它创建一个新数组,然后只需调用
[originalFetchedArray sortedArrayUsingDescriptors:sortDescriptors];
将返回一个新的排序数组。如果您从NSMutableArray开始,可以使用类似的方法对其进行排序。
答案 1 :(得分:0)
当我遇到一个非常类似的问题时,我刚刚为计算出的值创建了一个新列(在你的情况下,它将是持续时间)。之后,检索变得微不足道。