objective-C 中简单数据操作

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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值