NSFetchRequest搜索最近第N个日期的所有对象

时间:2014-11-12 10:22:53

标签: ios core-data nsdate nspredicate nsfetchrequest

我的数据如下:

objA date1 objnumber2

objB date2 objnumber1

objC date2 objnumber4

objD date2 objnumber3

objE date1 objnumber7

objF date3 objnumber6

objG date1 objnumber5

我正在寻找来自第N个日期的所有物品。结果对象需要使用objnumber进行排序(这应该很容易使用NSSortDescriptor)。

所以如果我指定N = 1(最近的日期),我应该只得到[objF]。 (date3是最近的)

如果N = 3(最早的日期),我应该排序[objA,objG,objF]

排序部分很简单。

我的问题是,我是否真的需要首先在整个数据中搜索最新日期(使用sortdescriptor和nsfetchrequest searchLimit的组合)?然后再进行第二次搜索以查找该日期的所有对象(使用nspredicate)并对其进行排序?

或者有更好的方法来执行此类搜索吗?您如何概括第N个日期而不是上次日期?那将是一个很大的性能打击吗?

注意事先不知道日期。

Edit2:好吧,由于我使用的是NSDate,因此更加复杂。所以几乎所有的对象都有独特的日期大声笑。还要在混合中输入nsdateformatter :(

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。

我没有使用日期,而是添加了一个新的Int64 NSNumber属性。每天添加obj,所有对象都标记有该特定日期的数字。

为了从第N天开始重新审阅所有对象,我首先在排序的fetchrequest中为该数字执行“fetchlimit 1”nsfetchrequest。这给了我最后一个号码。

现在对于第N个最后一个对象,我从最后一个数字中减去N.然后我为具有该number属性的所有对象执行“nspredicted”nsfetchrequest。然后我只是对结果数组进行排序。

这解决了我的问题:D