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

参考


   
© 2012 iOS 開発ブログ Natsu's note Suffusion theme by Sayontan Sinha