0

タイトルが意味をなさない場合は申し訳ありません。

もう少し説明しましょう。

私はこの CoreData アプリケーションを持っていますが、CoreData は比較的新しいものです。私は2つのテーブルを持っています。1 つは予算で、もう 1 つは支出です。したがって、Budget テーブルには TotalBudget というフィールドがあります。現在、Spending Table にはユーザーが入力したさまざまな行があり、このテーブルには個人支出というフィールドがあります。

ここで私が望んでいることは、個々の支出の合計が TotalBudget (Budget テーブル) より小さい予算のみを取得することです。SQL言語では、以下のようなものになります

TotalBudget < の予算から BudgetName を選択 (BudgetID = Budget.BudgetID の支出から Sum(IndividualBudget) を選択)

コアデータでそれを達成するにはどうすればよいですか? 1 つのテーブルからデータを取得するコードがあり、NSPredicate を使用して BudgetStartDate と BudgetEndDate に基づいてレコードをフィルター処理できますが、どうすればそのようなことを達成できますか。

ありがとう

4

1 に答える 1

1

次のオブジェクト モデルを想定しています。

Budget
--amount (decimal)
--spend (relationship to IndividualSpend object)

IndividualSpend
--amount (decimal)

これにより、支出額 > 予算額である Budget エンティティの配列が取得されます。

NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
fetch.entity = [managedObjectModel objectForKey:@"Budget"];
fetch.predicate = [NSPredicate predicateWithFormat:@"spend.@sum.amount > amount"];

NSError *error = nil;
NSArray *results = [context executeFetchRequest:fr error:&error];
if (error) {
  NSLog(@"ERROR: %@", error);
}
NSLog(@"Results: %@", results);
于 2011-06-27T15:14:22.347 に答える