NSPredicate 与核心数据问题

NSPredicate with Core Data issue

我在 Core Data 数据库中有订单对象。他们每个人都有日期和字段 flag = 0 或 1(1 表示该对象是从服务器加载的所有其他对象并且具有所有适当的字段并且不会再更改,0意味着该对象可以稍后更改,我需要稍后从服务器重新加载它)。我需要使用按日期排序的 NSFetchedresultController 在 UITableView 中加载该数据,但我只需要加载此数据直到 0(因为之后我将在 table 的底部显示 UIActivityIndi​​cator 以从服务器加载其他数据)。例如,我有按日期排序的数据:

1 1个 1个 1个 1 0 0 0 1个 1个 1个 1

我只需要加载前五个对象(以粗体标记)。我不知道如何正确编写 NSPredicate。如果我写 "flag > 0",我将加载标志 = 1 的其他对象。现在我只看到加载所有数据并使用 for 循环来形成适当数组的解决方案。但是否有更好的解决方案?

获取标志为 1 的前 5 个对象按日期排序

  • NSPredicate 过滤标志
  • 设置NSSortDescriptor按日期排序
  • fetchLimit 设置为 5。

您可以通过两次提取来执行此操作:首先,使用谓词 flag == 0 提取,按日期排序,使用 fetchLimit = 1。获取该对象的 date 属性的值(例如 firstDate),并将其用于 FRC 下的主提取的谓词中(例如 "date > %@", firstDate)。如果第一次获取得到 0 个结果,则不需要谓词 - 所有对象都必须具有 flag == 1.