【问题标题】:NSFetchRequest search for all objects from last Nth dateNSFetchRequest 搜索从最后 N 个日期开始的所有对象
【发布时间】:2014-11-12 10:22:52
【问题描述】:

我的数据如下:

objA date1 objnumber2

objB date2 objnumber1

objC date2 objnumber4

objD date2 objnumber3

objE date1 objnumber7

objF date3 objnumber6

objG date1 objnumber5

我正在寻找从最后一个日期开始的所有对象。结果对象需要使用 objnumber 进行排序(使用 NSSortDescriptor 应该很容易)。

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

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

排序部分很简单。

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

或者有没有更好的方法来执行这种类型的搜索?您如何将其概括为第 N 个日期而不是最后一个日期?那会是一个很大的性能打击吗??

注意事先不知道日期。

Edit2:好吧,因为我使用的是 NSDate,所以这更加复杂。所以几乎所有的对象都有唯一的日期哈哈。也必须在其中加入 nsdateformatter :(

【问题讨论】:

  • 现在查找 nsfetchrequest 唯一值,如果没有其他更好的方法,这可能有助于提高性能部分。如果我得到更好的东西会评论。

标签: ios core-data nsdate nspredicate nsfetchrequest


【解决方案1】:

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

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

为了从第 N 天检索所有对象,我首先在排序的 fetchrequest 中对该数字执行“fetchlimit 1”nsfetchrequest。这给了我最后一个数字。

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

这解决了我的问题:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    相关资源
    最近更新 更多