KVC Collection Operators

在介紹集合操作符強(qiáng)大的功能前我們先來(lái)看一下它的格式要求


1.png

簡(jiǎn)單的集合操作符

@avg 求均值

@interface People : NSObject
@property (nonatomic, copy) NSString *property;
- (instancetype)initWithProperty:(NSString *)property;
@end
- (void)viewDidLoad {
    People *zhanSan = [[People alloc]initWithProperty:@"3.5"];
    [array addObject:zhanSan]; 
    People *liSi = [[People alloc]initWithProperty:@"4"];
    [array addObject:liSi];    
    NSNumber *averageMoney = [array valueForKeyPath:@"@avg.property"];//結(jié)果是3.75
}

這里做個(gè)說(shuō)明
Left key path 是可以省略的,一般情況下都省略
這個(gè)例子中的集合操作符是@avg
Right key path這里指定了是property財(cái)產(chǎn)這個(gè)屬性,這一個(gè)是不可以省略的除了當(dāng)使用@count時(shí)
可能有人會(huì)提出疑問(wèn),property不是NSString類(lèi)型的嗎匆帚,怎么會(huì)計(jì)算除了均值呢,這里它會(huì)默認(rèn)轉(zhuǎn)換成double類(lèi)型璃岳,而返回值是NSNumber類(lèi)型的趁冈。
留一個(gè)小練習(xí):計(jì)算出一個(gè)數(shù)組中各元素的均值
@count
NSNumber *count = [array valueForKeyPath:@"@count"];//結(jié)果是2
除此外還有@sum,@max响迂,@min

對(duì)象操作符

@distinctUnionOfObjects

    NSArray *data = @[@"1", @"1", @"3"];
    NSNumber *count = [data valueForKey:@"@count"];
    NSArray *dataAfterOperation = [data valueForKeyPath:@"@distinctUnionOfObjects.self"];//結(jié)果是1考抄,3

這個(gè)操作符會(huì)刪除掉重復(fù)的元素,是不是很方便啊
@unionOfObjects

    NSArray *data = @[@"1", @"3", @"1"];
    NSNumber *count = [data valueForKey:@"@count"];
    NSArray *dataAfterOperation = [data valueForKeyPath:@"@unionOfObjects.self"];//結(jié)果是1蔗彤,3川梅,1

這個(gè)操作不會(huì)去重,如數(shù)組中放了很多個(gè)People然遏,而你只想獲得這些人的名字的時(shí)候就可以用這個(gè)操作符了

數(shù)組和集合操作符

如果數(shù)組中嵌套了數(shù)組應(yīng)該怎么辦呢贫途?
@distinctUnionOfArrays

    NSMutableArray *array = [NSMutableArray new];
   
    NSMutableArray *array1 = [NSMutableArray new];
    
    People *zhanSan1 = [[People alloc]initWithProperty:@"3.5"];
    People *liSi1 = [[People alloc]initWithProperty:@"4"];
    [array1 addObject:zhanSan1];
    [array1 addObject:liSi1];
    
    NSMutableArray *array2 = [NSMutableArray new];

    People *zhanSan2 = [[People alloc]initWithProperty:@"5"];
    People *liSi2 = [[People alloc]initWithProperty:@"4"];
    [array2 addObject:zhanSan2];
    [array2 addObject:liSi2];
    
    [array addObject:array1];
    [array addObject:array2];
    
    NSArray *results= [array valueForKeyPath:@"@distinctUnionOfArrays.property"];//結(jié)果是3.5,4待侵,5

除此之外還有@unionOfArrays,@unionOfArrays,@distinctUnionOfSets
推薦閱讀
KVC Collection Operators

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末丢早,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子秧倾,更是在濱河造成了極大的恐慌怨酝,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件那先,死亡現(xiàn)場(chǎng)離奇詭異农猬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)售淡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)斤葱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人揖闸,你說(shuō)我怎么就攤上這事苦掘。” “怎么了楔壤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)惯驼。 經(jīng)常有香客問(wèn)我蹲嚣,道長(zhǎng)递瑰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任隙畜,我火速辦了婚禮抖部,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘议惰。我一直安慰自己慎颗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布言询。 她就那樣靜靜地躺著俯萎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪运杭。 梳的紋絲不亂的頭發(fā)上夫啊,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音辆憔,去河邊找鬼撇眯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛虱咧,可吹牛的內(nèi)容都是我干的熊榛。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腕巡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼玄坦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起逸雹,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤营搅,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后梆砸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體转质,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年帖世,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了休蟹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡日矫,死狀恐怖赂弓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哪轿,我是刑警寧澤盈魁,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站窃诉,受9級(jí)特大地震影響杨耙,放射性物質(zhì)發(fā)生泄漏赤套。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一珊膜、第九天 我趴在偏房一處隱蔽的房頂上張望容握。 院中可真熱鬧,春花似錦车柠、人聲如沸剔氏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谈跛。三九已至,卻和暖如春溶褪,著一層夾襖步出監(jiān)牢的瞬間币旧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工猿妈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吹菱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓彭则,卻偏偏與公主長(zhǎng)得像鳍刷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俯抖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容