C25_OC15-OC集合类

来源:互联网 发布:音色鉴定软件下载 编辑:程序博客网 时间:2024/05/16 06:02

1.NSArray数组

////  main.m//  foundation框架////  Created by vigiles on 14-5-10.//  Copyright (c) 2014年 beardap. All rights reserved.//#import <Foundation/Foundation.h>void test(){    /** 这两个永远是空数组 **/    NSArray * arr1 = [NSArray new];    NSArray * arr2 = [NSArray array];        /** OC数组只能存放OC对象,且不能存放“nil” **/    /** OC数组只能在创建时初始化 **/    // 只有一个元素    NSArray * arr3 = [NSArray arrayWithObject:@"只有一个元素"];    // 多个元素    NSArray * arr4 = [NSArray arrayWithObjects:@"第一个元素", @"第二个元素", @"第三个元素", nil];        NSArray * arr5 = @[@"第1个元素", @"第2个元素", @"第3个元素"];        /** 使用 **/    // 点方法获取数组长度-元素个数    arr4.count;    // 消息指令获取元素个数    [arr4 count];    // 类方法根据索引获取元素    [arr4 objectAtIndex:2];    // C模式根据索引获取元素    arr4[0];        // 遍历元素    for (id obj in arr5) {        // 获取元素的索引        [arr5 indexOfObject:obj];                NSLog(@"%@", obj);    }        // 使用Block遍历元素    [arr5 enumerateObjectsUsingBlock:     // 每枚举一条记录,即更新id、idx、*stop     ^(id obj, NSUInteger idx, BOOL *stop) {         NSLog(@"%ld - %@", idx, obj);                  // 终止遍历         if (idx == 1) *stop = YES; // 注意:是*stop     }     ];}void codeLineCount(NSString *path){// 1. 文件资源管理器// 整个程序运行中只有一个NSFM对象-单例NSFileManager *nsfm = [NSFileManager defaultManager];BOOL dir = NO;// 是否为目录// 2. 判断路径是否存在,是否为目录BOOL exist = [nsfm fileExistsAtPath:path isDirectory:&dir];// 如果是文件夹,赋值dir为YES    // 3. 不存在就退出if (!exist) return;// 4. 如果是目录if (dir) {// 文件夹NSLog(@"文件夹");// 4-1. 当前目录中全部资源NSArray * arr = [nsfm contentsOfDirectoryAtPath:path error:nil];// 4-2. 遍历当前目录里的全部资源for (NSString * file in arr) {            // 4-3. 目录内子资源的全路径NSString * filePath = [NSString stringWithFormat:@"%@/%@", path, file];// 4-4. 递归。计算子资源路径codeLineCount(filePath);}}    // 5. 如果是文件else{NSLog(@"文件");        // 5-1 过滤文件扩展名NSString * extension = [path pathExtension];// 转为小写,匹配if (![[extension lowercaseString] isEqualToString:@"txt"] &&            ![[extension lowercaseString] isEqualToString:@"m"]   &&            ![[extension lowercaseString] isEqualToString:@"h"]            ) return;// 5-2 加载文本NSString * content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];//NSLog(@%@, content);// 5-3 统计文本行数// componentsSeparatedByString根据指定分割符拆分字串到数组NSArray * array = [content componentsSeparatedByString:@"\n"];NSLog(@"%@的文本行数:%d", path, array.count);    }}int main(){    test();    codeLineCount(@"/Users/vigiles/Desktop/oc_workspace");        return 0;}

2.NSMutableArray可变数组

#import <Foundation/Foundation.h>int main(){        /** 可变数组创建 **/    NSMutableArray * mutArr1 = [NSMutableArray new];    NSMutableArray * mutArr2 = [NSMutableArray array];    NSMutableArray * mutArr3 = [[NSMutableArray alloc] init];    NSArray * nsarray = @[@"111", @"222", @"333"];    NSMutableArray * mutArr4 = [[NSMutableArray alloc] initWithArray:nsarray];    NSMutableArray * mutArr5 = [NSMutableArray arrayWithObjects:@"yyyy", @"eeee", @"ssss", nil];        /** 删除元素 **/    [mutArr5 removeObject:@"yyyy"];    [mutArr5 removeAllObjects];        /** 添加元素 **/    [mutArr4 addObject:@"4444"];    // 点方法获取数组长度-元素个数    mutArr4.count;    // 消息指令获取元素个数    [mutArr4 count];    // 类方法根据索引获取元素    [mutArr4 objectAtIndex:2];    // C模式根据索引获取元素    mutArr4[0];        // 遍历元素    for (id obj in mutArr4) {        // 获取元素的索引        [mutArr4 indexOfObject:obj];                NSLog(@"%@", obj);    }        // 使用Block遍历元素    [mutArr4 enumerateObjectsUsingBlock:     // 每枚举一条记录,即更新id、idx、*stop     ^(id obj, NSUInteger idx, BOOL *stop) {         NSLog(@"%ld - %@", idx, obj);                  // 终止遍历         if (idx == 1) *stop = YES; // 注意:是*stop     }     ];        return 0;}

3.NSSet

#import <Foundation/Foundation.h>int main(){    // NSSet无序存储    NSSet * set1 = [NSSet set]; // 空    NSSet * set2 = [NSSet setWithObjects:@"aaaa", @"bbbb", @"cccc", nil];    // NSSet * set3 = [NSSet setWithArray:NSSArray];    // 根据已有的数组初始化    // NSSet * set4 = [NSSet setWithSet:[NSSet];        // 根据已有的Set初始化        NSString * str = [set2 anyObject]; // 随即返回对象        NSMutableSet * ms = [NSMutableSet set];    [ms addObject:@"可变Set"]; // 添加元素    [ms addObject:@"XXX"];        [ms removeObject:@"XXX"];   // 删除指定元素    [ms removeAllObjects];      // 删除全部元素        // 是集合,都能存放多个OC对象,且不能存放非OC对象    // 有可变子类MutableXXX    // NSArray有顺序    // NSSet无序}

4.NSDictionary字典

如同JavaMap
/**    NSDictionary 字典    数据格式:键值对    根据key查找value**/#import <Foundation/Foundation.h>int main(){    // 创建方式 1   [NSDictionary 值 键]    NSDictionary * dic = [NSDictionary dictionaryWithObject:@"值" forKey:@"键"];        // 两个数组中的数据一一对应    NSArray * keys = @[@"key.1", @"key.2", @"key.3", @"key.3"];    // 如果key重复,覆盖    NSArray * vals = @[@"val.1", @"val.2", @"val.3", @"val.3"];    // 创建方式 2   [NSDictionary 值数组 键数组]    NSDictionary * dic2 = [NSDictionary dictionaryWithObjects:vals forKeys:keys];        // 创建方式 3   [NSDictionary 值,键,  值,键,    值,键]    NSDictionary * dic3 = [NSDictionary dictionaryWithObjectsAndKeys:                           @"value01", @"key01",                           @"value02", @"key02",                           @"value02", @"key02",    // 如果key重复,覆盖                           @"value03", @"key03",                           nil];        // 创建方式 4    NSDictionary * dic4 = @{@"key-1":@"value-1",                            @"key-2":@"value-2",                            @"key-2":@"value-2",    // 如果key重复,覆盖                            @"key-3":@"value-3"};        // 读取方式 1    id value = [dic objectForKey:@"键"];    NSLog(@"键 - %@", value);        // 读取方式 2    id val = dic2[@"key.1"];    NSLog(@"key.1 - %@", val);        NSLog(@"dic,长度:%ld", [dic count]);      // 键值对的数量    NSLog(@"dic2,长度:%ld", [dic2 count]);    NSLog(@"dic3,长度:%ld", [dic3 count]);    NSLog(@"dic4,长度:%ld", [dic4 count]);        // 打印字典    NSLog(@"%@", dic4);    /**     {     "key-1" = "value-1";     "key-2" = "value-2";     "key-3" = "value-3";     }    **/        return 0;}

5.NSMutableDictionary可变字典

#import <Foundation/Foundation.h>int main(){    // 创建方式 1   [NSDictionary 值 键]    NSMutableDictionary * mutableDic = [NSMutableDictionary dictionary];        [mutableDic setObject:@"值" forKey:@"键"];    [mutableDic setObject:@"value" forKey:@"key"];    [mutableDic setObject:@"val"   forKey:@"key"];  // key重复,覆盖        // 根据key删除条目    //[mutableDic removeObjectForKey:@"key"];        // 根据key,取value    NSLog(@"“键 - %@”", mutableDic[@"键"]);        // 打印字典    NSLog(@"全字典:%@", mutableDic);        /** 常规方法遍历字典 **/    NSArray * arr = [mutableDic allKeys];    NSUInteger * integer = [mutableDic count];    for (int i = 0; i < integer; i ++) {        // NSString * key = [arr objectAtIndex:i];        NSLog(@"%@ - %@", arr[i], mutableDic[arr[i]]);    }        /** 使用block代码块遍历字典 **/    [mutableDic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {        NSLog(@"%@ == %@", key, obj);    }];        return 0;}

- end
0 0
原创粉丝点击