2009-07-21 47 views
5

我有星期模型,將Day作爲子對象。周模型中有「天」關係屬性來訪問所有關聯的日期對象。日模式具有持續時間屬性。如何在CoreData上使用@sum

如何計算指定周對象的一天持續時間總和?讓代碼示例如何使用@sum函數創建一個謂詞對象會很好。

也有可能有「計算」周WeekDuration屬性給定值 相關日期的持續時間在取回?對於這個問題,這將是最優雅的解決方案,但我不認爲CoreData可能會這樣。

回答

8

下面是一個例子,你將如何設置你的查詢只找到周,其中天期限的總和大於100

NSManagedObjectContext *context = ...; 
NSManagedObjectModel *model = ...; 
NSFetchRequest *fr = [[NSFetchRequest alloc] init]; 
fr.entity = [model.entitiesByName objectForKey:@"Week"]; 

//This predicate will be compiled into pure SQL 
fr.predicate = [NSPredicate predicateWithFormat:@"[email protected] > 100"]; 

NSError *error = nil; 
NSArray *results = [context executeFetchRequest:fr error:&error]; 
if (error) { 
    NSLog(@"ERROR: %@", error); 
} 
NSLog(@"Results: %@", results); 

實際上,你可以實現一個類似的計算性能只需將它添加到支持您的Week實體的NSManagedObject子類中:

- (NSNumber *) duration { 
    return [self valueForKeyPath:@"[email protected]"]; 
}