iOS valueForKeyPath常用用法

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

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可以獲取數組中相同key的元素

如下所示:

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

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

3、valueForKeyPath 可以使用. 來一層一層向下索引,當多個字典層級時,取子層級中的屬性就非常簡單了

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、刪除重復的數據

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

5、嵌套使用(先刪除對應值的重復數據再取值)

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; 要方便太多!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、valueForKeyPath可以獲取數組中的最小值、最大值、平均值、求和。代碼如下: NSArray*arr...
    參天草閱讀 557評論 0 1
  • 轉自:http://www.lxweimin.com/p/10b2323f502e 1、禁止手機睡眠 [UIApp...
    aggie1024閱讀 2,681評論 0 6
  • 1、設置UILabel行間距 NSMutableAttributedString* attrString = [[...
    十年一品溫如言1008閱讀 1,693評論 0 3
  • 1.老板不懂運營 這個問題最有代表性,能關聯出更多分支,整個問題鏈條是這樣的: 老板不懂運營→公司不重視運營→產品...
    泡胡呢閱讀 806評論 1 2
  • 時間太快,快到皮膚已經松弛,魚尾紋已慢慢爬到眼角,代謝已經降下來,身體機能已走向拋物線的下滑部分,老了,老了, 不...
    twinkle1110閱讀 257評論 1 0