我在Core Data数据库中有Orders对象。每个都有日期和字段标志 = 0或1(1表示此对象是从服务器加载的所有其他对象,并且具有所有正确的字段,不再更改,0表示该对象可以稍后更改,我需要稍后从服务器重新加载它)。我需要使用按日期排序的NSFetchedresultController在UITableView中加载该数据,但是我需要将此数据加载到0(因为之后我将在表的底部显示UIActivityIndicator以从服务器加载其他数据)。例如,我有按日期排序的数据:
1 1 1 1 1 0 0 0 1 1 1 1
我只需要加载前五个对象(用粗体字标记)。我不知道如何正确编写NSPredicate。如果我写“flag> 0”,我将使用flag = 1加载其他对象。现在我只看到加载所有数据的解决方案,并使用进行循环以形成正确的数组。但是可能有更好的解决方案吗?
答案 0 :(得分:1)
您可以将此作为两次抓取:首先,使用谓词flag == 0
获取,按日期排序,使用fetchLimit = 1
。获取该对象的date
属性的值(比如firstDate
),并将其用于FRC底层主要提取的谓词(例如"date > %@", firstDate
)。如果第一次获取得到0结果,那么就不需要谓词 - 所有对象都必须有flag == 1
。
答案 1 :(得分:0)
获取标记为按日期排序的前5个对象
NSPredicate
过滤标记NSSortDescriptor
设置为按日期排序fetchLimit
设置为5。