如何使用核心数据获取每个第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。