您的位置:首页 > 其它

对文件txt里的颜色名即颜色编码进行提取并处理保存

2015-11-12 13:56 351 查看

对文件txt里的颜色名即颜色编码进行提取并处理保存

crayons.txt里的内容

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

创建字符串用stringWithContentsOfFile方法,读取出文件里的字符串,但此时是一个长长的字符串,
然后用componentsSeparatedByString以"\n"对字符串进行解析, 返回一个字符串数组,
之后创建一个字典Dictionary, 遍历字符串数组,获得每一行的字符串,再用以"#"分割颜色名和对应的编码,分别存入字典的key和value中,
这样就得到了一个颜色字典了.
//获取文件路径
        NSString *path = @"/Users/dllo/Desktop/OC作业/OC06_字典,数组嵌套练习/OC06_字典,数组嵌套练习/crayons.txt";
        //以文件内容来初始化字符串: 参数说明: 1.路径  2.编码格式 3.错误信息
        NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
        
//1、使用字典管理所有的颜色,即字典中存储的是多个键值对,颜色名称为key,16进制颜色值(不带#)是value。
        //以换行符来分割整个字符串  生成行字符串数组
        NSArray *colors =[str componentsSeparatedByString:@"\n"];
        //定义一个字典来管理颜色
        NSMutableDictionary *colorDic = [NSMutableDictionary dictionary];
        //遍历数组内的每个元素(字符串中的每行/每个颜色值)
        for (NSString *color in colors) {
            //分割每行颜色名称和对应的16进制值
            NSArray *array = [color componentsSeparatedByString:@"#"];
            //颜色名为key, 颜色值为value
            //颜色名在array[0], 颜色值在数组array[1]
            [colorDic setObject:array[1] forKey:array[0]];
        }


//2.使用一个新的字典管理颜色,对颜色进行分类管理,即:“A”,“B”,“C”…即这个字典包含多个键值对,key是26个字母,value是数组,数组里存放的是Color对象(包含name和colorValue)。需要自己创建Color类。
        NSMutableDictionary *newDic = [NSMutableDictionary dictionary];
        BOOL isExist = NO;
        
        //遍历上述字典
        for (NSString *key in colorDic) {
            Color *color = [Color colorWithName:key andColorValue:[colorDic objectForKey:key]];
            //获得当前颜色对象的名称的首字母
            NSString *inital = [key substringToIndex:1];
            //遍历新字典, 判断当前key是否存在
            for (NSString *newKey in newDic) {
                if ([newKey isEqualToString:inital]) {
                    isExist = YES;
                }
            }
            if (!isExist) {
                //如果不存在 则为该颜色创建一个新数组, 并用当前首字母作为key存入新字典
                NSMutableArray *groupAray = [NSMutableArray array];
                [newDic setObject:groupAray forKey:inital];
            }
            [[newDic objectForKey:inital] addObject:color];
        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: