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

时间:2011-12-28 02:00:27

标签: iphone ios ipad core-data

我有实体Question。实体Question具有属性Number。我需要每20个问题取一次:1,21,41,61等。我该怎么做?

2 个答案:

答案 0 :(得分:5)

像往常一样创建NSFetchRequest,以及使用模数运算符的NSPredicate实例,例如以下未经测试的谓词:

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

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

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

{1, 21, 41, ...}

我没有对此进行过测试,但我认为,无论采用哪种方法都可以让你接近。

答案 1 :(得分:0)

可以为最后一位数字创建一个带 NSPredicate 的搜索掩码。如果您的问题少于1,000,000,我会提取所有问题并过滤数字,并示意:BOOL keepNumber = ((record.Number % 20) == 1)。一般来说,iPad / iPhone RAM / CPU GHz / Core Data智能手机正在上升,简单GET的性能成本不太可能重要,特别是与更复杂的GET相比,因为Core Data中的搜索谓词仍然需要检查每条记录。