2009-07-21 19 views
5

Dayモデルの子モデルを持つWeekモデルがあります。 Weekモデルには、関連するすべてのDayオブジェクトにアクセスするための「日」リレーションプロパティがあります。 Dayモデルにはdurationプロパティがあります。CoreDataで@sumを使用する方法

指定したWeekオブジェクトの合計時間を求めるにはどうすればよいですか? @sum関数を使って述語オブジェクトを作成する方法をコード例で示すことは素晴らしいことです。

また、フェッチ中の関連する日の合計の値が であるWeekクラスの "calculated" 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); 

以上であるあなたは、実際に似で計算されたプロパティを実装することができる唯一の数週間を見つけるためにあなたのクエリをする方法の例ですNSManagedObjectサブクラスのWeekエンティティを追加するだけです。

- (NSNumber *) duration { 
    return [self valueForKeyPath:@"[email protected]"]; 
} 
関連する問題