在我的核心數據模型中,我有一個具有日期屬性的實體,並且如標題所示,我希望將該實體按(星期)天分組。按核心數據平日分組
問題是,日期作爲時間戳存儲或多或少,我不知道如何創建一個能夠適當地分組/過濾我的實體的謂詞。
我已經想通了,我可能不得不爲每一天做一個提取,所以創建了以下方法。 代碼是我需要幫助的是正確的在它的中間。
- (NSFetchedResultsController *)fetchedResultsController:(NSDate *)day {
if(fetchedResultsController != nil)
return fetchedResultsController;
// Create and Configure Request
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// Predicate
// pseudo code where i'm clueless is marked by "<" and ">" - start
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"DateAttribute BETWEEN <first second of day> AND <last second of day>"];
// or
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"<dayofmonth-month-year of DateAttribute> LIKE <dayofmonth-month-year of day>"];
[request setPredicate:predicate];
// pseudo code where i'm clueless is marked by "<" and ">" - end
// Sort descriptors
NSSortDescriptor *titleDescriptor = [[NSSortDescriptor alloc] initWithKey:sortDescriptorName ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:titleDescriptor];
[request setSortDescriptors:sortDescriptors];
// create and init fetchResultsController
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
self.fetchedResultsController = aFetchedResultsController;
fetchedResultsController.delegate = self;
//Memory
[request release];
[titleDescriptor release];
[aFetchedResultsController release];
return fetchedResultsController;
}
我真的很感激任何幫助。謝謝
感謝您的全面回覆! 「 」如果你想按天分組,你可以在初始化NSFetchedResultsController時傳遞DateAttribute作爲sectionNameKeyPath參數。同樣,不需要指定謂詞:你將自動獲取這些日子的分段。 如果能夠工作,它會很好,但是當這樣做時,它將按照DateAttribute的值(包括時間,例如「2009-07-02 20:51:27 -0400」) p.s.:我的最終目標是獲得一個工作日的列表,當點擊其中一個時,與當天連接的所有實體都將在另一個tableview中打開。 – gabtub 2009-08-12 07:59:27
您可以通過在實體中存儲DateAttribute而無需使用我在示例代碼中顯示的相同技術來實現此目的:從NSDate對象(您的DateAttribute)開始,首先提取其日期組件,然後使用另一個NSDate對象構建另一個NSDate對象這些組件(因此它不包含時間)。這是您存儲在實體中的最後一個NSDate對象。然後,根據所解釋的日常工作檢索對象。 – 2009-08-12 09:56:49
起初我並不想修改數據模型,因爲它是由其他人指定的,但幸運的是,事實證明,我們確實不需要存儲時間和日期,但只有日期,因此我使用了部分示例代碼= >非常感謝 非常感謝! – gabtub 2009-08-12 15:58:22