main函数:
//
// main.m
// ColorManage
//
// Created by 王佳兴 on 14-11-6.
// Copyright (c) 2014年 lanou3g.com 蓝鸥科技. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Color.h"
#import "Manage.h"
int main(int argc, const char * argv[]) {
/*题目要求: 处理⼯工程⽂文件crayons.txt中的⽂文本信息,⽂文本内容是关于颜⾊色的,每⾏行都是⼀一 个颜⾊色的信息,例如:Almond #EED9C4,前⼀一个字符串是颜⾊色的名称,后⼀一 个字符串是颜⾊色的16进制⾊色值,处理⽂文本完成如下需求*/
// (1) *************************************************************************
// 使⽤用字典管理所有的颜⾊色,即字典中存储的是多个键值对,颜⾊色名称为 key,16进制颜⾊色值(不带#)是value___________________________________________________________________
//读取文件路径,定义字符串接收地址
NSString *path = @"/Users/dlios/Desktop/Objective-C/ColorManage/ColorManage/crayons.txt";
//定义一个字符串通过地址来接收文件内容
NSString *sourceStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//用换行来分割字符串存储到数组arr中
NSArray *arr = [sourceStr componentsSeparatedByString:@"\n"];
//打印数组,检验对错
NSLog(@"%@", arr);
//定义一个数组arr1来存储数组arr用#号分割后的小字符串
NSMutableArray *arr1 = [NSMutableArray array];
//循环用#对数组arr中每个小字符串进行分割
for (int i = 0; i < [arr count]; i++) {
//定义一个数组来存储对每次对arr进行分割操作后截取的两段小字符串
NSArray *arr2 = [arr[i] componentsSeparatedByString:@" #"];
//将每次得到的小数组arr2依次添加到大数组arr1中
[arr1 addObjectsFromArray:arr2];
}
//打印arr1
NSLog(@"%@", arr1);
// (2) *************************************************************************
// 取出所有的key,升序排列__________________________________________________________
//定义可变数组array1用来存储后面字典的key
NSMutableArray *array1 = [NSMutableArray array];
//定义可变数组array1用来存储后面字典的value
NSMutableArray *array2 = [NSMutableArray array];
//循环 偶数为颜色的名字是key 奇数为颜色的编码是value
for (int i = 0; i < [arr1 count]; i++) {
if ((i + 2) % 2 == 0) {
[array1 addObject:arr1[i]];
}else{
[array2 addObject:arr1[i]];
}
}
//创建字典 存储对应的key-value key为颜色名 value为颜色编码
NSMutableDictionary *colorDic = [NSMutableDictionary dictionaryWithObjects:array2 forKeys:array1];
//打印字典
NSLog(@"%@", colorDic);
//取出字典中的key
NSArray *arrKey = [colorDic allKeys];
//对字典中的key排序 *用方法选择器选择排序方法
NSArray *arr4 = [arrKey sortedArrayUsingSelector:@selector(compare:)];
//打印排序后的数组
NSLog(@"%@", arr4);
// (3) *************************************************************************
// 取出所有的value,按照排序后的key排列______________________________________________
//定义数组存储所有的value
NSMutableArray *arr5 = [NSMutableArray array];
//取出所有value
for (NSString *key in arr4) {
//定义字符串 按照arr4中排序号的key把每次循环得出的value赋值到字符串qqq上
NSString *qqq = [colorDic objectForKey:key];
//把得出的value添加到数组arr5中
[arr5 addObject:qqq];
}
//按照数组arr4排序好的key打印存有所有value的数组arr5
NSLog(@"%@", arr5);
// (4) *************************************************************************
// 使⽤用⼀一个新的字典管理颜⾊色,对颜⾊色进⾏行分类管理,即:“A”,“B”,“C”... 即这个字典包含多个键值对,key是26个字⺟母,value是数组,数组⾥里存放的是 Color对象(包含name和colorValue)。需要⾃自⼰己创建Color类-------------------------------------------
//初始化manage类中的一个对象
Manage *colorDictionary = [[Manage alloc] init];
//定义一个manage中类型的可变字典存储最后大写字母和分组后的颜色组成的大字典
NSMutableDictionary *dic = [colorDictionary colorDictionary];
//打印字典 检验是否字典在类中是否定义正确
NSLog(@"%@", dic);
for (NSString *key in colorDic) {
//定义一个Color类的对象, 此对象为字典类型,通过在管理类中写好的字典的方法,通过字典的key(大写字母)循环依次给color赋值
Color *color = [[Color alloc] initWithName:key colorValue:[colorDic objectForKey:key]];
//通过color的key的首字母找出字典中应该存入的数组,"="后面为通过对象color的name的首字母找到大字典中对应的数组
NSMutableArray *arrayM1 = [dic valueForKey:[color.name substringToIndex:1]];
//给通过判断选择后的数组依次添加与分组名key(大写字母)相对应的对象
[arrayM1 addObject:color];
}
//打印最后结果,分组之后的字典
NSLog(@"%@", dic);
return 0;
}
//
// Color.h
// ColorManage
//
// Created by 王佳兴 on 14-11-7.
// Copyright (c) 2014年 lanou3g.com 蓝鸥科技. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Color : NSObject
{
NSString *_name;
NSString *_colorValue;
}
- (id)initWithName:(NSString *)name colorValue:(NSString *)colorValue;
- (void)setName:()name;
- (NSString *)name;
- (void)setColorValue:()colorValue;
- (NSString *)colorValue;
@end
//
// Color.m
// ColorManage
//
// Created by 王佳兴 on 14-11-7.
// Copyright (c) 2014年 lanou3g.com 蓝鸥科技. All rights reserved.
//
#import "Color.h"
@implementation Color
- (id)initWithName:(NSString *)name colorValue:(NSString *)colorValue
{
self = [super init];
if (self != nil) {
_name = name;
_colorValue = colorValue;
}
return self;
}
- (void)setName:()name
{
_name = name;
}
- (NSString *)name
{
return _name;
}
- (void)setColorValue:()colorValue
{
_colorValue = colorValue;
}
- (NSString *)colorValue
{
return _colorValue;
}
-(NSString *)description
{
return [NSString stringWithFormat:@"name:%@ colorValue:%@", _name, _colorValue];
}
@end
//
// Manage.h
// ColorManage
//
// Created by 王佳兴 on 14-11-7.
// Copyright (c) 2014年 lanou3g.com 蓝鸥科技. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Manage : NSObject
{
NSMutableDictionary *colorDictionary;
}
- (NSMutableDictionary *)colorDictionary;
@end
//
// Manage.m
// ColorManage
//
// Created by 王佳兴 on 14-11-7.
// Copyright (c) 2014年 lanou3g.com 蓝鸥科技. All rights reserved.
//
#import "Manage.h"
@implementation Manage
- (id)init
{
self = [super init];
if (self != nil) {
colorDictionary = [[NSMutableDictionary alloc] init];
[self groupDic];
}
return self;
}
- (void)groupDic
{
NSArray *groupNames = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z",nil];
for (NSString *group in groupNames) {
NSMutableArray *arr = [NSMutableArray array];
[colorDictionary setObject:arr forKey:group];
}
}
- (NSMutableDictionary *)colorDictionary
{
return colorDictionary;
}
@end
文件:
Almond #EED9C4
Antique Brass #C88A65
Apricot #FDD5B1
Aquamarine #71D9E2
Asparagus #7BA05B
Atomic Tangerine #FF9966
Banana Mania #FBE7B2
Beaver #926F5B
Bittersweet #FE6F5E
Black #000000
Blizzard Blue #A3E3ED
Blue #0066FF
Blue Bell #9999CC
Blue Green #0095B6
Blue Violet #6456B7
Brick Red #C62D42
Brink Pink #FB607F
Brown #AF593E
Burnt Orange #FF7034
Burnt Sienna #E97451
Cadet Blue #A9B2C3
Canary #FFFF99
Caribbean Green #00CC99
Carnation Pink #FFA6C9
Cerise #DA3287
Cerulean #02A4D3
Chartreuse #FF9966
Chestnut #B94E48
Copper #DA8A67
Cornflower #93CCEA
Cotton Candy #FFB7D5
Cranberry #DB5079
Dandelion #FED85D
Denim #1560BD
Desert Sand #EDC9AF
Eggplant #614051
Electric Lime #CCFF00
Fern #63B76C
Flesh #FFCBA4
Forest Green #5FA777
Fuchsia #C154C1
Fuzzy Wuzzy Brown #C45655
Gold #E6BE8A
Goldenrod #FCD667
Granny Smith Apple #9DE093
Gray #8B8680
Green #01A368
Green Yellow #F1E788
Happy Ever After #6CDA37
Hot Magenta #FF00CC
Inch Worm #B0E313
Indian Red #B94E48
Indigo #4F69C6
Jazzberry Jam #A50B5E
Jungle Green #29AB87
Laser Lemon #FFFF66
Lavender #FBAED2
Macaroni And Cheese #FFB97B
Magenta #F653A6
Magic Mint #AAF0D1
Mahogany #CA3435
Manatee #8D90A1
Mango Tango #E77200
Maroon #C32148
Mauvelous #F091A9
Melon #FEBAAD
Midnight Blue #003366
Mountain Meadow #1AB385
Mulberry #C54B8C
Navy Blue #0066CC
Neon Carrot #FF9933
Olive Green #B5B35C
Orange #FF681F
Orchid #E29CD2
Outer Space #2D383A
Outrageous Orange #FF6037
Pacific Blue #009DC4
Peach #FFCBA4
Periwinkle #C3CDE6
Pig Pink #FDD7E4
Pine Green #01796F
Pink Flamingo #FF66FF
Plum #843179
Prussian Blue #003366
Purple Heart #652DC1
Purple Mountain's Majesty #9678B6
Purple Pizzazz #FF00CC
Radical Red #FF355E
Raw Sienna #D27D46
Razzle Dazzle Rose #FF33CC
Razzmatazz #E30B5C
Red #ED0A3F
Red Orange #FF3F34
Red Violet #BB3385
Robin's Egg Blue #00CCCC
Royal Purple #6B3FA0
Salmon #FF91A4
Scarlet #FD0E35
Screamin' Green #66FF66
Sea Green #93DFB8
Sepia #9E5B40
Shadow #837050
Shamrock #33CC99
Shocking Pink #FF6FFF
Silver #C9C0BB
Sky Blue #76D7EA
Spring Green #ECEBBD
Sunglow #FFCC33
Sunset Orange #FE4C40
Tan #FA9D5A
Tickle Me Pink #FC80A5
Timberwolf #D9D6CF
Torch Red #FD0E35
Tropical Rain Forest #00755E
Tumbleweed #DEA681
Turquoise Blue #6CDAE7
Ultra Green #66FF66
Ultra Orange #FF6037
Ultra Pink #FF6FFF
Ultra Red #FD5B78
Ultra Yellow #FFFF66
Unmellow Yellow #FFFF66
Violet (purple) #8359A3
Violet Red #F7468A
Vivid Tangerine #FF9980
Vivid Violet #803790
White #FFFFFF
Wild Blue Yonder #7A89B8
Wild Strawberry #FF3399
Wild Watermelon #FD5B78
Wisteria #C9A0DC
Yellow #FBE870
Yellow Green #C5E17A
Yellow Orange #FFAE42