2011-03-29 105 views
0

我有一個託管對象有兩個日期:dateOne和dateTwo,我想檢索dateTwo比dateOne更早的日期。NSPredicate在CoreData比較日期

現在我用下面的謂詞來獲取對象:

NSArray *objects = nil; 

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
request.entity = [NSEntityDescription entityForName:@"Object" inManagedObjectContext:context]; 
request.predicate = [NSPredicate predicateWithFormat:@"dateOne > dateTwo", @""]; 

objects = [context executeFetchRequest:request error:nil]; 
[request release]; 

有時它的工作原理,但其他時候的對象獲取有dateTwo比dateOne更近。有沒有更好的方法來做這樣的事情?

謝謝!

回答

0

也許你可以添加一個布爾屬性「dateTwoIsOlder」到實體,然後只是獲取對象堅持呢?

+0

這是一個好主意。謝謝! :) – Derek 2011-03-30 15:36:06

+0

的作品,但可能不是最好的想法,因爲現在你必須擔心該布爾不同步。你也不想讓它成爲一個瞬態屬性,因爲所有對象都必須加載到內存中才能處理請求。應該是一個謂詞格式,它可以提供端口,現在可以查看interwebs。 – 2011-10-12 19:37:25

0

爲什麼不直接從核心數據創建fetch request而不是以編程方式執行?