OC中使用字典管理顏⾊,oc字典管理顏

來源:互聯網
上載者:User

OC中使用字典管理顏⾊,oc字典管理顏

  處理⼯程⽂件crayons.txt中的⽂本資訊,⽂本內容是關於顏色的,每⾏都是⼀個顏⾊的資訊,例如:Almond #EED9C4,前⼀個字串是顏⾊色的名稱,後⼀個字串是顏色的16進位⾊值,處理⽂本完成如下需求:

1、使用字典管理所有的顏⾊,即字典中儲存的是多個索引值對,顏⾊名稱為key,16進位顏⾊色值(不帶#)是value。

2、取出所有的key,升序排列.

3、取出所有的value,按照排序後的key排列。

4、使⽤用⼀個新的字典管理顏色,對顏⾊進⾏分類管理,即:“A”,“B”,“C”... 即這個字典包含多個索引值對,key是26個字⺟母,value是數組,數組⾥存放的是 Color對象(包含name和colorValue)。需要⾃己建立Color類。

 

  首先,我們建立一個Color類,Color.h聲明部分:

@interface Color : NSObject{    NSString * _name;    NSString * _value;}- (instancetype)initWithName:(NSString *)name value:(NSString *)value;- (NSString *)getName;- (NSString *)getValue;@end

Color.m實現部分:

#import "Color.h"@implementation Color- (instancetype)initWithName:(NSString *)name value:(NSString *)value{    self = [super init];    if (self) {        _name = name;        _value = value;    }    return self;}- (NSString *)getName{    return _name;}- (NSString *)getValue{    return _value;}- (NSString *)description{    return [NSString stringWithFormat:@"COLOR --> %@  %@",_name,_value];}@end

我們在main函數中實現題目的相關要求:

//從文檔中讀取字串    NSString * dataString = [NSString stringWithContentsOfFile:@"/Users/liguoxiang/Desktop/Product/OC/Lesson/HomeWork-06/HomeWork-06/crayons.txt" encoding:NSUTF8StringEncoding error:nil];        NSLog(@"%@",dataString);        //將字串以 \n 做分割,得到所有表示顏色的字串,儲存在dataArray中    NSArray * dataArray = [dataString componentsSeparatedByString:@"\n"];        //建立空的可變的字典,儲存表示顏色的索引值對    NSMutableDictionary * colorDic = [NSMutableDictionary dictionaryWithCapacity:[dataArray count]];        //快速枚舉dataArray,得到表示顏色的字串    for (NSString * colorString in dataArray) {                //分割colorString,得到顏色的名字和色值        NSArray * colorComponents = [colorString componentsSeparatedByString:@" #"];        NSString * colorName = colorComponents[0];        NSString * colorValue = colorComponents[1];                //將顏色的名字作為key,色值作為value,儲存在字典中        [colorDic setObject:colorValue forKey:colorName];    }    //枚舉結束後,輸出管理顏色的字典    NSLog(@"color dic = %@",colorDic);        //建立分組字典    NSMutableDictionary * colorGroupDic = [NSMutableDictionary dictionaryWithCapacity:30];    //建立數組拿出所有key值    NSArray * colorNameArray = [colorDic allKeys];        for (int i = 0; i < [colorNameArray count]; i ++) {        //取出顏色的名稱        NSString * name = colorNameArray[i];        //取出顏色對應的value值        NSString * value = [colorDic objectForKey:name];                        //初始color對象        Color * c = [[Color alloc] initWithName:name value:value];        //groupName為顏色的首字母        NSString * groupName = [name substringToIndex:1];        //取出對應的分組名下的數組        NSMutableArray * oneGroup = [colorGroupDic objectForKey:groupName];                        //如果輸入為空白        if (nil == oneGroup) {            //就在數組中添加color對象            oneGroup = [NSMutableArray arrayWithObject:c];            //然後將數組和分組名添加到字典中            [colorGroupDic setObject:oneGroup forKey:groupName];        }else{            //數組不為空白,說明分組存在,直接添加就可以了            [oneGroup addObject:c];        }    }        NSLog(@"colorGroupDic = %@",colorGroupDic);

 關於題目中用到的顏色文檔(crayons.txt),由於無法上傳工程檔案,我將其附在後面方便讀者閱讀,請讀者自行粘貼建立text文檔,

Almond #EED9C4Antique Brass #C88A65Apricot #FDD5B1Aquamarine #71D9E2Asparagus #7BA05BAtomic Tangerine #FF9966Banana Mania #FBE7B2Beaver #926F5BBittersweet #FE6F5EBlack #000000Blizzard Blue #A3E3EDBlue #0066FFBlue Bell #9999CCBlue Green #0095B6Blue Violet #6456B7Brick Red #C62D42Brink Pink #FB607FBrown #AF593EBurnt Orange #FF7034Burnt Sienna #E97451Cadet Blue #A9B2C3Canary #FFFF99Caribbean Green #00CC99Carnation Pink #FFA6C9Cerise #DA3287Cerulean #02A4D3Chartreuse #FF9966Chestnut #B94E48Copper #DA8A67Cornflower #93CCEACotton Candy #FFB7D5Cranberry #DB5079Dandelion #FED85DDenim #1560BDDesert Sand #EDC9AFEggplant #614051Electric Lime #CCFF00Fern #63B76CFlesh #FFCBA4Forest Green #5FA777Fuchsia #C154C1Fuzzy Wuzzy Brown #C45655Gold #E6BE8AGoldenrod #FCD667Granny Smith Apple #9DE093Gray #8B8680Green #01A368Green Yellow #F1E788Happy Ever After #6CDA37Hot Magenta #FF00CCInch Worm #B0E313Indian Red #B94E48Indigo #4F69C6Jazzberry Jam #A50B5EJungle Green #29AB87Laser Lemon #FFFF66Lavender #FBAED2Macaroni And Cheese #FFB97BMagenta #F653A6Magic Mint #AAF0D1Mahogany #CA3435Manatee #8D90A1Mango Tango #E77200Maroon #C32148Mauvelous #F091A9Melon #FEBAADMidnight Blue #003366Mountain Meadow #1AB385Mulberry #C54B8CNavy Blue #0066CCNeon Carrot #FF9933Olive Green #B5B35COrange #FF681FOrchid #E29CD2Outer Space #2D383AOutrageous Orange #FF6037Pacific Blue #009DC4Peach #FFCBA4Periwinkle #C3CDE6Pig Pink #FDD7E4Pine Green #01796FPink Flamingo #FF66FFPlum #843179Prussian Blue #003366Purple Heart #652DC1Purple Mountain's Majesty #9678B6Purple Pizzazz #FF00CCRadical Red #FF355ERaw Sienna #D27D46Razzle Dazzle Rose #FF33CCRazzmatazz #E30B5CRed #ED0A3FRed Orange #FF3F34Red Violet #BB3385Robin's Egg Blue #00CCCCRoyal Purple #6B3FA0Salmon #FF91A4Scarlet #FD0E35Screamin' Green #66FF66Sea Green #93DFB8Sepia #9E5B40Shadow #837050Shamrock #33CC99Shocking Pink #FF6FFFSilver #C9C0BBSky Blue #76D7EASpring Green #ECEBBDSunglow #FFCC33Sunset Orange #FE4C40Tan #FA9D5ATickle Me Pink #FC80A5Timberwolf #D9D6CFTorch Red #FD0E35Tropical Rain Forest #00755ETumbleweed #DEA681Turquoise Blue #6CDAE7Ultra Green #66FF66Ultra Orange #FF6037Ultra Pink #FF6FFFUltra Red #FD5B78Ultra Yellow #FFFF66Unmellow Yellow #FFFF66Violet (purple) #8359A3Violet Red #F7468AVivid Tangerine #FF9980Vivid Violet #803790White #FFFFFFWild Blue Yonder #7A89B8Wild Strawberry #FF3399Wild Watermelon #FD5B78Wisteria #C9A0DCYellow #FBE870Yellow Green #C5E17AYellow Orange #FFAE42

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.