我在NSDate
中的Drug
实体中有一个CoreData
属性,名为expiringDate
,我需要获取日期在30之间的所有实体expiringDate
之前的几天。
我无法弄清楚是否以及如何在NSPredicate
中包含此类计算。
我想避免在数据库结构中使用新属性thirtyDayFromExpiryDate
,通过NSTimeInterval
计算获取日期,并在谓词中使用该属性来解决问题。
有可能吗?
答案 0 :(得分:0)
您尝试使用以下命令返回所有结果:
expiryDate > [NSDate date] && aMonthToExpityDate <= [NSDate date]
,其中
aMonthToExpiryDate = expiryDate - 30 days
因此,您可以简化将查询重写为:
expiryDate > [NSDate date] && (expiryDate - 30 days) <= [NSDate date]
或
expirayDate > [NSDate date] && (expiryDate <= [NSDate date] + 30 days)
您现在可以在谓词中使用,因为计算是静态的:
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"expiryDate BETWEEN (%@, %@)",
[NSDate date],
[NSDate dateWithTimeIntervalSinceNow:k30Days]];