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