Objective c NSPredicate用于检查与其他变量匹配的CoreData属性是否满足条件
我有一个有三个字段的实体Objective c NSPredicate用于检查与其他变量匹配的CoreData属性是否满足条件,objective-c,core-data,nspredicate,Objective C,Core Data,Nspredicate,我有一个有三个字段的实体 Task { Active BOOL Recurrent Int Started date } “经常性”是任务发生的延迟。如果任务有一个给定的“开始”和一个15的“重复”,则意味着它必须在“开始”后15天重复。 我想构建一个NSPredicate,用于查找在给定日期需要执行的所有实体 例如,假设存储中有一个实体的'Started'=15/12/2011'Recurrent'=15,那么在2011年12月29日查询CoreData时不会给出任何结果。
Task {
Active BOOL
Recurrent Int
Started date
}
“经常性”是任务发生的延迟。如果任务有一个给定的“开始”和一个15的“重复”,则意味着它必须在“开始”后15天重复。
我想构建一个NSPredicate,用于查找在给定日期需要执行的所有实体
例如,假设存储中有一个实体的'Started'=15/12/2011'Recurrent'=15,那么在2011年12月29日查询CoreData时不会给出任何结果。在2011年12月30日进行查询将给出一个结果,因为“开始”已经过去了15天
我可以通过一些数学运算轻松地用SQL来处理这个问题,但我完全不知道如何使用NSPredicate来实现这一点,因为查询是直接在字段上完成的。
我想继续使用NSPredicate,因为它是一个具有UITableView的iOS应用程序,我计划使用NSFetchedResultsController,但如果不可能,则可以使用NSArray实体
谢谢“简单”的答案是将周期性的
也存储为日期。或者存储作为日期的recurrentResolved
值,并根据该值进行提取
不那么简单和丑陋的选项是加载所有任务并在内存中进行计算(以一种方便的方法),然后对对象执行第二次预测。一旦它们加载到内存中,NSPredicate
就可以利用子类中的方法
我建议第一种选择。第二个要贵得多。简单的答案是将重复性也存储为日期。或者存储作为日期的recurrentResolved
值,并根据该值进行提取
不那么简单和丑陋的选项是加载所有任务并在内存中进行计算(以一种方便的方法),然后对对象执行第二次预测。一旦它们加载到内存中,NSPredicate
就可以利用子类中的方法
我建议第一种选择。第二个要贵得多。您能在这里也使用predicateWithBlock吗?不过,我同意你的第一个选择是最好的。在对象被提取到内存后,是的。在NSFetchRequest期间
;不,这可以转化为实际的SQL。我知道这是我的错,但当使用CoreData时,迟早会让我走到死胡同。我不知道第一个选项,我需要在一个UITable中使用这个东西,它可以填充未来或过去的任何日期。这就是计算的需要。使用自定义函数的NSExpression如何?您不能在NSFetchRequest
中进行计算。没有例外,也没有解决办法。这是一个限制,您可以提交雷达,但该功能不存在。因此,你只有两个选择;预先计算值或筛选两次。您是否也可以在此处使用predicateWithBlock?不过,我同意你的第一个选择是最好的。在对象被提取到内存后,是的。在NSFetchRequest期间
;不,这可以转化为实际的SQL。我知道这是我的错,但当使用CoreData时,迟早会让我走到死胡同。我不知道第一个选项,我需要在一个UITable中使用这个东西,它可以填充未来或过去的任何日期。这就是计算的需要。使用自定义函数的NSExpression如何?您不能在NSFetchRequest
中进行计算。没有例外,也没有解决办法。这是一个限制,您可以提交雷达,但该功能不存在。因此,你只有两个选择;预先计算值或过滤两次。