統計情報(30日間)


最新情報をツイート

人気の投稿

コレクションオペレータ

このエントリーをはてなブックマークに追加



こんなデータ構造があった時
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
)
となる。特定要素の列挙したい場面は多々あるのでこれは便利。


関連情報)



Leave a Reply