我有两个 NSDate 属性的实体:
@property NSDate *startTime;
@property NSDate *endTime;
我用它来创建点事件和持续时间事件。因此,对于点事件endTime
可以等于零。
我想获取所有有限制的实体: startTime >= minDate && endTime <= maxDate
但是 NSPredicate 喜欢:
NSDate *startTime = [[NSUserDefaults standardUserDefaults] objectForKey:@"firstBound"];
NSDate *endTime = [[NSUserDefaults standardUserDefaults] objectForKey:@"secondBound"];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"(startTime >= %@) AND ((endTime <= %@) OR (endTime == nil))",startTime,endTime]];
无法正常工作。我会解释的。如果存储在数据库中的所有事件都在 2000-2010 年的范围内,并且我正在使用 minDate = 1900、maxDate = 1950 进行提取,那么数据库中的所有点事件都符合这个谓词,因为它们的 endTime 字段为零,并且字段 startTime 明显超过 minDate。
知道如何处理吗?不受 NSPredicate 的限制。我会处理任何决定。