如何使用核心数据获取每个第n个对象

我有实体Question 。 实体Question有财产Number 。 我需要提取每20个问题:1,21,41,61等。我该怎么做?

照常创buildNSFetchRequest ,以及使用模运算符的NSPredicate实例,例如以下未经testing的谓词:

 NSPredicate *idPredicate = [NSPredicate predicateWithFormat:@"modulus:by:(Number, 20) == 1"]; 

将谓词添加到获取请求中,并像往常一样执行提取。

或者创build一个包含{1, 21, 41, ...} NSSet {1, 21, 41, ...}的ID值的NSSet ,并将其与谓词一起使用:

 NSSet *idSet = /* set of NSNumber instances including 1, 21, etc. */ NSPredicate *idPredicate = [NSPredicate predicateWithFormat:@"Number IN %@", idSet]; 

我还没有testing过这个,但是我认为两种方法都应该让你接近。

NSPredicate创build一个search掩码可能是最后一个数字。 如果您的问题less于100万,我会提取所有问题并过滤数字,示意如下: BOOL keepNumber = ((record.Number % 20) == 1) 。 一般而言,iPad / iPhone RAM / CPU GHz /核心数据智能正在提高,简单GET的性能成本不太可能是重要的,尤其是与更复杂的GET相比,因为Core Data中的search谓词仍然必须检查每个logging。