用KVC獲取數(shù)組最值/平均值/獲取批量返回值等

開(kāi)發(fā)中獲取數(shù)組中最大/最小值會(huì)先進(jìn)行排序再取值.
獲取數(shù)組的平均值會(huì)求和取平均,略顯麻煩.
其實(shí)iOS中可以利用KVC實(shí)現(xiàn), 還可以批量調(diào)用方法,批量獲取返回值.

NSArray *array = [NSArray arrayWithObjects:@"1.2",@"2.1", @"4.9", nil];

// 最大值
CGFloat maxFloat = [[array valueForKeyPath:@"@max.floatValue"] floatValue];

// 最小值
CGFloat minFloat = [[array valueForKeyPath:@"@min.floatValue"] floatValue];

// 平均值
CGFloat avg = [[array valueForKeyPath:@"@avg.floatValue"] floatValue];

// 轉(zhuǎn)為int類(lèi)型后再轉(zhuǎn)為string類(lèi)型
NSArray *resultArray = [array valueForKeyPath:@"intValue.stringValue"];

// 轉(zhuǎn)為int類(lèi)型后再轉(zhuǎn)為string類(lèi)型再求每個(gè)string的長(zhǎng)度
NSArray *lengthArray = [array valueForKeyPath:@"intValue.stringValue.length"];

NSArray *stringArray = [NSArray arrayWithObjects:@"NameS",@"CHEN", @"WoShiShui", nil];

// string數(shù)組轉(zhuǎn)大寫(xiě)
NSArray *resultArray = [stringArray valueForKeyPath:@"uppercaseString"];

可以看出, KVC可以做到讓元素依次調(diào)用某方法并將返回值放入新的數(shù)組返回. 系統(tǒng)的方法可以如此調(diào)用,猜想自定義方法也可行, 驗(yàn)證如下:

// 在 NSNumber 分類(lèi)中擴(kuò)展一個(gè)判斷正負(fù)的方法
@implementation NSNumber (Extension)
- (BOOL)isPositiveNumber {
    if ([self floatValue] > 0) return YES;
    else return NO;
}

// 用 NSNumber 數(shù)組檢驗(yàn)
NSArray *numArray = [NSArray arrayWithObjects:@1.2, @(-2.1), @(10), nil];
NSArray *reuslts = [numArray valueForKeyPath:@"isPositiveNumber"];
for (int i = 0; i < reuslts.count; i++) {
    NSLog(@"第%d個(gè)元素類(lèi)型: %@, 值: %@", i + 1, [reuslts[i] class],reuslts[i]);
}

打印結(jié)果:
2016-09-17 20:41:40.204 Test [2957:502894] 第1個(gè)元素類(lèi)型: __NSCFBoolean, 值: 1
2016-09-17 20:41:40.204 Test [2957:502894] 第2個(gè)元素類(lèi)型: __NSCFBoolean, 值: 0
2016-09-17 20:41:40.205 Test [2957:502894] 第3個(gè)元素類(lèi)型: __NSCFBoolean, 值: 1

返回值是BOOL類(lèi)型, 結(jié)果正、負(fù)、正, 驗(yàn)證正確.
這個(gè)特性值得利用到程序的設(shè)計(jì)中去,想想都覺(jué)得能玩出很多"花樣"來(lái).


覺(jué)得有用的猿友們點(diǎn)個(gè)贊嘍??.

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • KVC(Key-value coding)鍵值編碼,單看這個(gè)名字可能不太好理解。其實(shí)翻譯一下就很簡(jiǎn)單了,就是指iO...
    黑暗中的孤影閱讀 50,250評(píng)論 74 441
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • KVC簡(jiǎn)單介紹 KVC(Key-value coding)鍵值編碼,就是指iOS的開(kāi)發(fā)中,可以允許開(kāi)發(fā)者通過(guò)Key...
    公子無(wú)禮閱讀 1,523評(píng)論 0 6
  • KVC(Key-value coding)鍵值編碼,單看這個(gè)名字可能不太好理解。其實(shí)翻譯一下就很簡(jiǎn)單了,就是指iO...
    Fendouzhe閱讀 732評(píng)論 0 6
  • 序言 第一部分戀愛(ài)與自信的“道” 第一章、核心自信 第1節(jié)—自信的根源 第2節(jié)—自信與狀態(tài) 第3節(jié)—如何提升核心自...
    迎刃閱讀 5,917評(píng)論 1 8

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