iOS valueForKeyPath常用用法

1、valueForKeyPath可以獲取數(shù)組中的最小值、最大值、平均值、求和。代碼如下:

NSArray *array = @[@10, @23, @43, @54, @7, @17, @5];

+ (NSString *)caculateArray:(NSArray *)array
{
    CGFloat sum = [[array valueForKeyPath:@"@sum.floatValue"] floatValue];
    CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];
    CGFloat max =[[array valueForKeyPath:@"@max.floatValue"] floatValue];
    CGFloat min =[[array valueForKeyPath:@"@min.floatValue"] floatValue];
    NSLog(@"%fn%fn%fn%f",sum,avg,max,min);
    return [NSString stringWithFormat:@"%f",sum];
}

2、valueForKeyPath可以獲取數(shù)組中相同key的元素

如下所示:

NSArray *arr = @[@{@"city":@"beijing",@"person":@{@"name":@"zhangsan"}},@{@"city":@"chengdu"}];

[arr valueForKeyPath:@"city"] 可以獲取到city數(shù)組 @[@"beijing",@"chengdu"]

3、valueForKeyPath 可以使用. 來(lái)一層一層向下索引,當(dāng)多個(gè)字典層級(jí)時(shí),取子層級(jí)中的屬性就非常簡(jiǎn)單了

NSDictionary *dict1 = @{@"dict1":@{@"dict2":@{@"name":@"lishi",@"info":@{@"age":@"12"}}}};

id res = [dict1 valueForKeyPath:@"dict1.dict2.name"];//(http://dict1.dict2.name/)
NSLog(@"res = %@",res);// 輸出lishi

4、刪除重復(fù)的數(shù)據(jù)

NSArray *array = @[@"qq", @"wechat", @"qq", @"msn", @"wechat"];
NSArray *deleltNewA = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];
NSLog(@"deleltNewA = %@",deleltNewA);// 輸出( qq,  wechat,    msn)

5、嵌套使用(先刪除對(duì)應(yīng)值的重復(fù)數(shù)據(jù)再取值)

NSArray *array = @[@{@"name" : @"xiaoming",
                  @"code" : @1},
                 @{@"name": @"judy",
                  @"code" : @2},
                 @{@"name": @"judy",
                  @"code" : @3},
                 @{@"name": @"xiaohua",
                  @"code" : @4}];
NSArray *deleltNewA =  [array valueForKeyPath:@"@distinctUnionOfObjects.name"];
NSLog(@"deleltNewA = %@",deleltNewA);// 輸出(judy, xiaohua, xiaoming); 

6、改變 UITextfield 的 placeholder 的顏色

[addressTextField  setValue:[UIColor redColor] forKeyPath:@”_placeholderLabel.textColor”];

比起重寫 - (void)drawPlaceholderInRect:(CGRect)rect; 要方便太多!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、valueForKeyPath可以獲取數(shù)組中的最小值、最大值、平均值、求和。代碼如下: NSArray*arr...
    參天草閱讀 576評(píng)論 0 1
  • 轉(zhuǎn)自:http://www.itdecent.cn/p/10b2323f502e 1、禁止手機(jī)睡眠 [UIApp...
    aggie1024閱讀 2,860評(píng)論 0 6
  • 1、設(shè)置UILabel行間距 NSMutableAttributedString* attrString = [[...
    十年一品溫如言1008閱讀 2,029評(píng)論 0 3
  • 1.老板不懂運(yùn)營(yíng) 這個(gè)問(wèn)題最有代表性,能關(guān)聯(lián)出更多分支,整個(gè)問(wèn)題鏈條是這樣的: 老板不懂運(yùn)營(yíng)→公司不重視運(yùn)營(yíng)→產(chǎn)品...
    泡胡呢閱讀 878評(píng)論 1 2
  • 時(shí)間太快,快到皮膚已經(jīng)松弛,魚尾紋已慢慢爬到眼角,代謝已經(jīng)降下來(lái),身體機(jī)能已走向拋物線的下滑部分,老了,老了, 不...
    twinkle1110閱讀 275評(píng)論 1 0

友情鏈接更多精彩內(nèi)容