我的数据如下:
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 :(
答案 0 :(得分:0)
我找到了解决问题的方法。
我没有使用日期,而是添加了一个新的Int64 NSNumber属性。每天添加obj,所有对象都标记有该特定日期的数字。
为了从第N天开始重新审阅所有对象,我首先在排序的fetchrequest中为该数字执行“fetchlimit 1”nsfetchrequest。这给了我最后一个号码。
现在对于第N个最后一个对象,我从最后一个数字中减去N.然后我为具有该number属性的所有对象执行“nspredicted”nsfetchrequest。然后我只是对结果数组进行排序。
这解决了我的问题:D