1.读取文件内容存储到字符串对象
NSString *text = [NSString stringWithContentsOfFile:@"/Users/lanou3g/Documents/HomeWork/OC/homework_05_02/homework_05_02/crayons.txt" encoding:NSUTF8StringEncoding error:nil];<pre name="code" class="objc">NSLog(@"text = %@", text);// 2.获取字符串中每一行信息,存到数组中
NSArray *lineInfoArray = [text componentsSeparatedByString:@"\n"];
NSLog(@"lineInfoArray = %@", lineInfoArray);
// 3.创建可变字典,准备存取颜色的键值对
NSMutableDictionary *colorDic = [NSMutableDictionary dictionary];
// 4.遍历数组中的每一个元素,分隔,并保存到可变字典中
for (NSString *str in lineInfoArray) {
//4.1.将一行信息通过“ #”拆分到数组中
NSArray *arr = [str componentsSeparatedByString:@" #"];
//4.2.取出第一个元素作为key,最后一个元素作为value,保存到字典中
[colorDic setObject:arr.lastObject forKey:arr.firstObject];
}
NSLog(@"colorDic = %@", colorDic);
// 5.取出所有的key升序排列
NSArray *allKeys = colorDic.allKeys;
allKeys = [allKeys sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"allKeys = %@", allKeys);
// 6.取出所有的value按照升序后的key排列
NSMutableArray *allValues = [NSMutableArray array];
// 快速遍历所有的key
for (NSString *key in allKeys) {
// 通过key取值并添加到数组中
[allValues addObject:colorDic[key]];
}
NSLog(@"allValues = %@", allValues); // 创建空的可变字典
NSMutableDictionary *objcDict = [NSMutableDictionary dictionary];
// 遍历所有的key值
for (NSString *key in allKeys) {
// 根据key值获取对象
NSString *value = colorDic[key];
// 根据颜色名称和颜色的值创建Color对象
Color *c = [[Color alloc] init];
[c setName:key];
[c setColorValue:value];
// 获取颜色名称的首字母
NSString *firstCharacter = [key substringToIndex:1];
// 根据首字母判断是否存在键值对
if (objcDict[firstCharacter]) {
// 如果存在键值对,直接添加到可变数组中
NSMutableArray *mutableArray = objcDict[firstCharacter];
[mutableArray addObject:c];
} else {
// 如果不存在键值对,则创建键值对,并把对象包含进去
NSMutableArray *mutableArray = [NSMutableArray arrayWithObject:c];
[objcDict setObject:mutableArray forKey:firstCharacter];
}
}
NSLog(@"%@", objcDict);其中需要在 .m 文件中重写
description方法
- (NSString *)description
{
return [NSString stringWithFormat:@"%@ %@", _name, _colorValue];
}在.h文件中声明Color@interface Color : NSObject
{
@protected
NSString *_name;
NSString *_colorValue;
}
- (void)setName:(NSString *)name;
- (NSString *)name;
- (void)setColorValue:(NSString *)colorValue;
- (NSString *)colorValue;
@end

被折叠的 条评论
为什么被折叠?



