+----------+ +--------------+ +------+
| Occasion | <--->> | GiftOccasion | <--->> | Gift |
+----------+ +--------------+ +------+
を私は機会の名前、および一定の基準を満たすすべての贈り物のカウントを取得したいとしました。
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request retain];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Occasion" inManagedObjectContext:[self managedObjectContext]];
[request setEntity:entity];
[request setResultType:NSDictionaryResultType];
[request setPropertiesToFetch:[NSArray arrayWithObjects:@"name", @"year", nil]];
[request setReturnsDistinctResults:YES];
NSSortDescriptor *yearDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"year" ascending:NO selector: @selector(caseInsensitiveCompare:)] autorelease];
NSSortDescriptor *nameDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector: @selector(caseInsensitiveCompare:)] autorelease];
NSArray *descriptors = [NSArray arrayWithObjects:yearDescriptor, nameDescriptor, nil];
[request setSortDescriptors:descriptors];
NSError *error = nil;
NSArray *results = [[self managedObjectContext] executeFetchRequest:request error:&error];
...しかし、私は完全にGift
の数を取得する方法についての困惑:現在、私は一年と名前でソートされた機会の明確なリストを取得しています。簡単な方法がありますか、それぞれGiftOccasion
とそれに関連するGift
をトラバースしてまとめて追加する必要がありますか?
ETA:私はという異なる結果を生成していることに注意してください。ここでモデルを直接取得していないことに注意してください。私はこの情報を得るために別の要求を実行しなければならないと仮定しますが、可能でない場合は、それが良いでしょう。
ありがとうございます!
右ですが、途中で別の関係を経ています。私は 'GiftOccasion'を通して手作業で繰り返す必要があり、それぞれに' Gift 'の数を加えますか?実際には良い方法はありませんか?また、 'setReturnsDistinctResults:YES'も使用していますが、これも問題です。 –
また、データキーパスで@countを使用してカウントを取得することもできます。中間部分を反復処理する必要はありません – Nevin
Nevin、ここでキー値収集演算子を使用して正確にカウントを取得できますか? – shawnwall