关于字典管理颜色,对颜色进行分类管理的问题
来源:互联网 发布:园林绿化施工网络 编辑:程序博客网 时间:2024/06/05 07:50
题目:
处理工程文件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类。
提示
//获取文件路径
//找到文件->右键(显示简介)->位置就是文件的绝对路径(一定记得加文件的名字)
NSString *filePath = @"/Users/fuxiaohui/公司/上课代码/河南34班上课例子/OC/ColorManager/ColorManager/crayons.txt";
//读取文件中得字符串
NSString *originalString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
Color.h:
@interface Color : NSObject
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *colorValue;
@end
main.m
NSString *filePath = @"/Users/lanouhn/Desktop/这几天的作业/crayons.txt";//路径是根据自己文件存放的位置而变的
//读取文件中得字符串
NSString *originalString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
//这里可以打印一下字符串, 看看有没有获取到该字符串
//NSLog(@"%@", originalString);
//截取字符串, 使用componentsSeparatedByString方法
NSArray *array = [originalString componentsSeparatedByString:@"\n"];
//NSLog(@"%@", array);
//创建一个字典
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
//遍历整个数组, 使用快速枚举的方法
for (id soft in array) {
//使用截取字符串的方法, 同上
NSArray *array1 = [soft componentsSeparatedByString:@" #"];
//将array1看做一个二维数组
[dic setObject:array1[1] forKey:array1[0]];
}
NSLog(@"%@", dic);
//获取所有的key值
NSLog(@"----------获取所有的键值----------");
NSArray *key = [dic allKeys];
NSLog(@"%@", key);
//取出所有的键值,升序排列
//定义一个比较字符串的块方法, 便于下面进行调用
NSComparator rule = ^(NSString *str1, NSString *str2) {
NSComparisonResult result = [str1 compare:str2];
return result;
};
//调用上面定义的方法, 对数组softKey进行排序(升序)
NSArray *softKey = [key sortedArrayUsingComparator:rule];
NSLog(@"---------键值升序排列----------");
NSLog(@"%@", softKey);
//取出所有value,根据排好序的key
NSMutableArray *softValue = [[NSMutableArray alloc] init];
//利用快速枚举遍历key值所在的数组
for (id soft1 in softKey) {
NSArray *value = [dic objectForKey:soft1];
[softValue addObject:value];
}
NSLog(@"----取出所有value,根据排好序的key----");
NSLog(@"%@", softValue);
//4、使用一个新的字典管理颜色,对颜色进行分类管理,即:“A”,“B”,“C”…即这个字典包含多个键值对,key是26个字母,value是数组,数组里存放的是Color对象(包含name和colorValue)。需要自己创建Color类。
//新建一个字典
NSMutableDictionary *newDic = [[NSMutableDictionary alloc] init];
//遍历字典
for (id keys in dic) {
//新建一个color对象,并初始化
Color *color = [[Color alloc] init];
//将key值赋给color.name
[color setName:keys];
//将value赋给colorValue
[color setColorValue:[dic objectForKey:keys]];
//找到color的首字母
NSString *str = [color.name substringToIndex:1];
//将首字母大写
NSString *str1 = [str uppercaseString];
//通过key的首字母值给新字典赋值
NSMutableArray *value = [newDic objectForKey:str1];
//进行判断, 看value是否为空
if (value == nil) {
//为空的时候, 重新建一个数组, 存放value值
value = [NSMutableArray array];
//给新字典赋值
[newDic setObject:value forKey:str1];
}
//如果value不为nil, 说明数组存在, 直接往里面赋值
[value addObject:color];
}
//打印新的字典内容
NSLog(@"%@", newDic);
- 关于字典管理颜色,对颜色进行分类管理的问题
- XWindow/GDK对颜色的管理
- 关于颜色的txt文档管理(Objective-C)
- 需求管理之如何对客户的需求进行分类
- eclipse中对项目进行分类管理
- eclipse中对项目进行分类管理
- eclipse对项目进行分类管理
- eclipse对项目进行分类管理
- 关于DBGrid的分类颜色显示
- Silverlight中的颜色管理?
- android颜色管理
- android 颜色管理
- 对图片上的颜色进行转换
- 对用户数据进行简单的管理用,C++实现几个字符串的字典序排序
- 关于页面的背景颜色和内容文字颜色问题
- 如何快速的有序的对多层级结构的代码进行分类管理
- eclipse中对项目进行分类管理显示
- [易飞9.0]颜色管理设置
- vs2010中objectARX工程创建类
- oracle HANA sum等计算函数会自动过滤空值
- CentOS 6.6安装Horizon View Client3.4
- 设计模式C++实现(1)——工厂模式
- leetCode 99.Recover Binary Search Tree(修正二叉搜索树) 解题思路和方法
- 关于字典管理颜色,对颜色进行分类管理的问题
- html js form
- 分页显示数据库数据
- 正方形计数问题(穷举+pair+struct/C++)
- JavaScript之正则表达式入门
- js关闭页面不提示
- 通过uri呼起本地app
- org.hibernate.AnnotationException: No identifier specified for entity
- iOS 应用名称的国际化图解