1

1対多の関係を持つ2つのエンティティがあります。Category私のセクションヘッダーをSubSubCategory表し、私の行を表します。

Category
{
    name:string
    subs<-->>SubCategory
}

SubCategory
{
    name:string
    numbervalue:NSNumber
}

現在NSPredicate、名前に基づいてセクションをフィルタリングするために使用できます。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@",@"anamevalue"];

Subcategoryここで、この述語をさらにフィルタリングして、を持つカテゴリのみを返すようにしsubvalue == 1ます。

Category1 対多の子の値に基づいてエンティティをフィルター処理するにはどうすればよいですか?

このようなことを試しましたが、うまくいきません。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@ AND subs.numbervalue==%@",@"anamevalue",1];
4

2 に答える 2

4

次のような述語を行います。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@ AND ANY subs.numbervalue == %@)", @"anamevalue", [NSNumber numberWithInt:1]];

ANY、比較が true を返すオブジェクトが subs コレクションに少なくとも 1 つある場合にのみ true を返す述語修飾子です。

を使用しても同じ結果が得られますSUBQUERY

それが役に立てば幸い。

于 2012-04-25T10:35:00.333 に答える
0

述語の構文が間違っています。整数値を文字列として渡しています。

あなたの述語は

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@ AND subs.numbervalue==%i",@"anamevalue",1]

それ以外は正しいようです。

于 2012-04-25T10:34:06.147 に答える