字典

*题目要求处理⼯工程⽂文件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-valuekey为颜色名 value为颜色编码

   NSMutableDictionary *colorDic= [NSMutableDictionarydictionaryWithObjects: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”... 即这个字典包含多个键值对,key26个字⺟母,value是数组,数组⾥里存放的是 Color对象(包含namecolorValue)。需要⾃自⼰己创建Color-------------------------------------------

    

   //初始化manage类中的一个对象

    Manage *colorDictionary= [[Manage allocinit];

   //定义一个manage中类型的可变字典存储最后大写字母和分组后的颜色组成的大字典

    NSMutableDictionary *dic= [colorDictionary colorDictionary];

   //打印字典 检验是否字典在类中是否定义正确

    NSLog(@"%@", dic);

    

    for (NSString *key in colorDic){

      //定义一个Color类的对象此对象为字典类型,通过在管理类中写好的字典的方法,通过字典的key(大写字母)循环依次给color赋值

       Color *color =[[Color allocinitWithName:key colorValue:[colorDic objectForKey:key]];

      //通过colorkey的首字母找出字典中应该存入的数组,"="后面为通过对象colorname的首字母找到大字典中对应的数组

       NSMutableArray *arrayM1= [dic valueForKey:[color.namesubstringToIndex:1]];

      //给通过判断选择后的数组依次添加与分组名key(大写字母)相对应的对象

       [arrayM1 addObject:color];

    }

    

   //打印最后结果,分组之后的字典

    NSLog(@"%@", dic);


    return 0;

}


Color类:


 



#import 


@interface Color: NSObject

{

    NSString *_name;

    NSString *_colorValue;

}


- (id)initWithName:(NSString *)namecolorValue:(NSString *)colorValue;


- (void)setName:()name;


- (NSString *)name;


- (void)setColorValue:()colorValue;


- (NSString *)colorValue;


@end


Color实现:



#import "Color.h"


@implementation Color


- (id)initWithName:(NSString *)namecolorValue:(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类:


 



#import 


@interface Manage: NSObject

{

    NSMutableDictionary *colorDictionary;

}

- (NSMutableDictionary *)colorDictionary;



@end


Manage实现:


//


#import "Manage.h"


@implementation Manage

- (id)init

{

    self =[super init];

    if (self != nil){

      

      colorDictionary =[[NSMutableDictionary allocinit];

       

       [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

转发请保留出处!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩俊强

奖励一杯咖啡☕️

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值