2012-03-06 58 views
1

我需要检索所有Booking对象,并将departDate属性设置为当前日期或将来的日期。我的代码如下:NSPredicate - 获取受限于未来日期的核心数据

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(departDate >= %@)", [NSDate date]]; 
[fetchRequest setEntity:entity]; 
[fetchRequest setPredicate:predicate]; 
NSError *error; 
bookings = [[context executeFetchRequest:fetchRequest error:&error] retain]; 

NSLog(@"curernt date %@", [NSDate date]); 

for (Booking *order in bookings) { 
    NSLog(@"%@", [NSDate dateWithTimeIntervalSince1970:order.departDate]); 
} 

但日志显示:

2012-03-06 18:58:24.518 Airline[2201:207] curernt date 2012-03-06 13:28:24 +0000 
2012-03-06 18:58:24.520 Airline[2201:207] 2012-03-06 12:37:59 +0000 
2012-03-06 18:58:24.528 Airline[2201:207] 2012-03-05 12:55:50 +0000 
2012-03-06 18:58:24.529 Airline[2201:207] 2012-03-08 12:55:50 +0000 
2012-03-06 18:58:24.530 Airline[2201:207] 2012-03-02 13:07:33 +0000 
2012-03-06 18:58:24.531 Airline[2201:207] 2012-04-06 13:13:53 +0000 
2012-03-06 18:58:24.532 Airline[2201:207] 2012-01-06 13:13:53 +0000 

所有的对象都被检索,好像没有过滤器。有人能告诉我我在这里做错了什么吗?

回答

2

核心数据支持日期直接作为NSDate。自1970年以来,您使用NSDate和日期为秒混合

在你的模型,使起诉departDate被设定为“日期”,然后在`departDate`设置为`Date`我的数据模型中使用

for (Booking *order in bookings) { 
    NSLog(@"%@", order.departDate); 
} 
+0

,但是当我生成'NSManagedObject'子类,我检查了“使用基本数据类型的标量属性”,也许是因为'departData'在我的类中定义为'NSTimeInterval' ..我会尝试只将该变量类型更改为'NSDate'并查看是否它的工作。 – saiy2k 2012-03-10 18:20:51

+1

将“DepartDate”的数据类型从NSTimeInterval更改为NSDate工作... :) – saiy2k 2012-03-11 17:04:26