HOME » Natsu note » 古い投稿 » To-many relationshipの個数を条件にNSPredicateを生成する方法

To-many relationshipの個数を条件にNSPredicateを生成する方法 2010/03/15/|古い投稿

この記事は情報が古い可能性があります。参照する際にはご注意ください。

Core DataでエンティティがTo-many relationshipを持つとき、NSPredicateの条件に、その個数を指定したいことがある。例えば、Entity: DepartmentがTo-many relationship: employeesを持つとして、従業員10人以上の部署のみ抽出など。

そのようなときは、KVC (Key-Value Coding) の@countが使える。

NSPredicateの生成は、以下のようにすればよい。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"employees.@count >= 10"];

これは別にNSPredicateやCore Dataに限った話ではなく、KVCの記述方法なので、KVCであれば何にでも使える。便利! このようにキーパス内で利用できる演算子をコレクション演算子といい、全部で以下のような演算子がある。

@avg
@count
@distinctUnionOfArrays
@distinctUnionOfObjects
@distinctUnionOfSets
@max
@min
@sum
@unionOfArrays
@unionOfObjects
@unionOfSets

参考