2009-07-21 48 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]"]; 
}