用字典管理Color

 处理⼯工程⽂文件crayons.txt中的⽂本信息,文本内容是关于颜色的,每行都是一 个颜色的信息,例如:Almond #EED9C4,前一个字符串是颜色的名称,后一个字符串是颜色的16进制色值,处理⽂文本完成如下需求

 1、使⽤用字典管理所有的颜色,即字典中存储的是多个键值对,颜色名称为key,16进制颜色值(不带#)是value。

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

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

 4、使⽤用一个新的字典管理颜色,对颜色进⾏行分类管理,即:“A”,“B”,“C”... 即这个字典包含多个键值对,key是26个字母,value是数组,数组里存放的是 Color对象(包含name和colorValue)。需要⾃己创建

main.m

#import <Foundation/Foundation.h>
#import "Color.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {

   //获取文件路径
    NSString *filePath = @"/Users/lanouhn/Downloads/crayons.txt";
        
    //读取文件中得字符串
     NSString *originalString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

      
        NSArray *arr = [originalString componentsSeparatedByString:@"\n"];
      //NSLog(@"arr = %@", arr);
        
      //定义一个数组用来存储所有的key
        NSMutableArray *keyArr1 = [[NSMutableArray alloc] init];
        //定义数组用来存储value
        NSMutableArray *valueArr1= [[NSMutableArray alloc] init];
          //遍历arr中的每个元素
        for (NSString *p in arr) {
        //定义一个数组arr2存数一个key
            //componentsSeparatedByString将字符串以"#"为界限分割成两个小字符串
            NSArray *arr2  = [p componentsSeparatedByString:@" #"];
            //分割后,第一个字符为key,第二个为value
            NSString *a = [arr2 objectAtIndex:0];  //获取key
            NSString *b = [arr2 objectAtIndex:1];  //获取value
            [keyArr1 addObject:a];     //key的数组
            [valueArr1 addObject:b];   //value的数组
        }
        
        
      //定义一个字典
        NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjects:valueArr1 forKeys:keyArr1];
        NSLog(@"dic = %@", dic);
        //2.在字典中找到所有的key --- 升序排序
        NSArray *allKey = [dic allKeys];
        NSArray *ascendKey = [allKey sortedArrayUsingSelector:@selector(compare:)];
        NSLog(@"ascendKey = %@", ascendKey);
        
    //3、取出所有的value,按照排序后的key排列
        // -- 创建数组存储Value
        NSMutableArray *value = [[NSMutableArray alloc] init];
        //遍历所有的key
        for (NSString *key2 in ascendKey) {
            //根据排好序的key找到Value
            NSString *str = [dic objectForKey:key2];
            [value addObject:str];
        }
        NSLog(@"%@", value);
        
        
      
    //4、使⽤用一个新的字典管理颜色,对颜色进⾏行分类管理,即:“A”,“B”,“C”... 即这个字典包含多个键值对,key是26个字母,value是数组,数组里存放的是 Color对象(包含name和colorValue)。需要⾃己创建Color类。
        //创建新的字典
        NSMutableDictionary *newDic = [[NSMutableDictionary alloc] init];
        //遍历所有的KeyArr1, 取首字母
        for (NSString *colorName in keyArr1) {
            //取出原字典的key(firstArr)作为新字典的key
            NSString *firstArr = [colorName substringToIndex:1];
            NSMutableArray *value2 = newDic[firstArr];   //根据key查找value
            //创建一个Color类的对象
            Color *color = [[Color alloc] initWithName:colorName colorValue:dic[colorName]];
            //如果value不存在,重新创建一个数组
            if (!value2) {
                value2 = [NSMutableArray arrayWithCapacity:1];
                [newDic setObject:value2 forKey:firstArr];
                [value2 addObject:color];
            } else {
                //如果存在value,直接将color增加到数组
                [value2 addObject:color];
            }
        }
        NSLog(@"%@", newDic);
        
    }
    return 0;
}

 

Color.h

#import <Foundation/Foundation.h>

@interface Color : NSObject {
    
NSString *_name;
NSString *_colorValue;
}

- (void)setName:(NSString *)name;
- (NSString *)name;
- (void)setColorValue:(NSString *)colorValue;
- (NSString *)colorValue;
- (id)initWithName:(NSString *)name colorValue:(NSString *)colorValue;

@end

 

Color.m

#import "Color.h"

@implementation Color
- (void)setName:(NSString *)name {
    _name = name;
}
- (NSString *)name {
    return _name;
}
- (void)setColorValue:(NSString *)colorValue {
    _colorValue = colorValue;
}
- (NSString *)colorValue {
    return _colorValue;
}
- (id)initWithName:(NSString *)name colorValue:(NSString *)colorValue {
    self = [super init];
    if (self) {
        _name = name;
        _colorValue = colorValue;
    }
    return self;
}

- (NSString *)description {
    return [NSString stringWithFormat:@"name = %@, colorValue = %@", _name, _colorValue];
}
@end

 

posted @ 2014-12-31 10:37  Every-Day  阅读(189)  评论(0编辑  收藏  举报