こんなデータ構造があった時
NSArray *animals=@[
@{@"name" : @"Dog",
@"numberOfLegs" : @4,
@"breeds" : @[
@{@"name" : @"Lab", @"price" : @299.99},
@{@"name" : @"Collie", @"price" : @199.99},
@{@"name" : @"Shepard", @"price" : @299.99}
]
},
@{@"name" : @"Cat",
@"numberOfLegs" : @4,
@"breeds" : @[
@{@"name" : @"Siamese", @"price" : @99.99},
@{@"name" : @"Persian", @"price" : @89.99},
@{@"name" : @"Himalayan", @"price" : @79.99}
]
},
@{@"name" : @"Spider",
@"numberOfLegs" : @8,
@"breeds" : @[
:
numberOfLegsの平均値は1行で求められる。
id avgNumberOfLegs = [animals valueForKeyPath:@"@avg.numberOfLegs"];オペレータは @min, @max, @avg, @count, @sum などの集計系の他、@unionOfObjects などの集合系がある。
NSArray* names = [animals valueForKeyPath:@"@unionOfObjects.name"];なら
(
Dog,
Cat,
Spider,
Fish,
Goose
)となる。特定要素の列挙したい場面は多々あるのでこれは便利。関連情報)

