2011-12-28 52 views

回答

5

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

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

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

或者创建ID值,其中包括{1, 21, 41, ...},使用与谓词的NSSet

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

我没有测试过这一点,但是这两种方式应该让你关门,我想。

+0

我相信这是一个很好的答案,亚历克斯!我需要如何将谓词(模数运算符)改为每隔n天取一次?我的数据模式中有DateTime属性,而不是数字,每个属性代表一天(股价)。 – AlexR 2012-07-26 06:22:21

0

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