NSPredicate与核心数据问题

时间:2016-05-25 10:03:59

标签: ios core-data nspredicate nsfetchedresultscontroller nsfetchrequest

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

1 1 1 1 1 0 0 0 1 1 1 1

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

2 个答案:

答案 0 :(得分:1)

您可以将此作为两次抓取:首先,使用谓词flag == 0获取,按日期排序,使用fetchLimit = 1。获取该对象的date属性的值(比如firstDate),并将其用于FRC底层主要提取的谓词(例如"date > %@", firstDate)。如果第一次获取得到0结果,那么就不需要谓词 - 所有对象都必须有flag == 1

答案 1 :(得分:0)

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

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