oc 字典集合简单使用
2015-10-06 17:50
363 查看
// 字典类用于存放具有映射关系的数据 // kay是唯一的⚠️ value是对象 无序存放 // NSDictionary❤️ // 1 、以键值对的形式进行存储 即 kay-value // 2 、字典靠key找到相应的value对象 key不能重复 但是value可以重复 // 3 、字典无序存放⚠️ // ->->->->->->->->->->->->->->->->实例化不可变的字典对象 /* NSDictionary *d1 = @{@"k1": @"value1",@"k2":@"value2"}; // NSLog(@"%@",d1); // initWithObjectsAndKeys 一个value 一个key ⚠️ NSDictionary *d2 = [[NSDictionary alloc]initWithObjectsAndKeys:@"obj1",@"key1",@"obj2",@"key2", nil]; // NSLog(@"%@",d2); // 用一个字典给另一个字典初始化 NSDictionary *d3 = [[NSDictionary alloc]initWithDictionary:d2]; // NSLog(@"%@",d3); NSDictionary *d4 = [NSDictionary dictionaryWithDictionary:d3]; NSLog(@"%@",d4); NSDictionary *d5 = [NSDictionary dictionaryWithObject:@"da" forKey:@"key"];//key遵循nscopying协议的对象 NSLog(@"%@",d5); NSDictionary *d6 = [NSDictionary dictionaryWithObjectsAndKeys:@"obj1",@"key1",@"obj2",@"key2", nil]; NSLog(@"%@",d6); NSDictionary *d7 = [NSDictionary dictionaryWithObjects:@[@"v1",@"v2"] forKeys:@[@"k1",@"k2"]]; NSLog(@"%@",d7); //->->->->->->->->->->->->->->-> 获取字典对象个数 NSLog(@"%lu", [d1 count]); //->->->->->->->->->->->->->->-> 获取所有的key 和 value NSArray *a = [d1 allKeys]; NSLog(@"%@",a); NSArray *b = [d1 allValues]; NSLog(@"%@", b); //->->->->->->->->->->->->->->-> 通过key 获取 value // valueForKey 不安全 key里不能有@ 否则会崩 objectForKey 不会崩 返回null NSLog(@"%@", [d1 valueForKey:@"k1"]); //kvc NSLog(@"%@", [d1 objectForKey:@"k2"]); */ /* //->->->->->->->->->->->->->->->NSMutableDictionary //->->->->->->->->->->->->->-> 创建可变字典对象 // 空的 使用之前必须进行初始化 、、、、、、、、、、、、、、、、、、 NSMutableDictionary *md1 = [[NSMutableDictionary alloc]init]; NSMutableDictionary *md2 = [NSMutableDictionary dictionary]; //->->->->->->->->->->->->->-> 添加键值对 [md1 setValue:@"v1" forKey:@"k1"];// value 可以为空 但不会添加到字典中 [md1 setObject:@"v2" forKey:@"k2"]; [md1 setObject:@"v3" forKey:@"k3"];//value 不能为空 否则会崩 NSLog(@"%@",md1); //->->->->->->->->->->->->->-> 修改key对应的value [md1 setValue:@"v2" forKey:@"k1"]; NSLog(@"%@",md1); //->->->->->->->->->->->->->-> 删除键值对 // [md1 removeObjectForKey:@"k1"]; // [md1 removeObjectsForKeys:@[@"k1",@"k2"]]; // [md1 removeAllObjects]; // NSLog(@"%@",md1); //->->->->->->->->->->->->->-> 循环遍历字典 // NSArray *arr = [md1 allKeys]; // for (int i = 0 ; i < [md1 count]; i++) { // NSLog(@"%@",[arr objectAtIndex:i]);//所有key // NSLog(@"%@",arr[i]); // NSLog(@"%@", md1[arr[i]]);//字典对象名[key] // NSLog(@"%@",[md1 objectForKey:arr[i]]); // } //得到的是所有的 key ⚠️ for (id ob in md1) { NSLog(@"%@",ob); // NSLog(@"%@",[md1 valueForKey:ob]); NSLog(@"%@", md1[ob]);//通过key得到value } */ /* 字面量 基本的数值类型的字面量: @数值 NSLog(@"%@",@32); @(数值) BOOL a = YES; NSLog(@"%@",@(a));//可以把一个数值类型的变量转化为对象类型 需要加(); 字符串 @"" 数组 @[obj,...] 字典@{key:value,...} */ /* // ->->->->->->->-> 集合: 唯一性 无序性 都是对象类型 // ->->->->->->->-> 创建集合对象 NSSet *s1 = [[NSSet alloc]initWithObjects:@"s1",@"s2",@"s2",@(23),@(1), nil]; NSLog(@"%@",s1); NSSet *s2 = [[NSSet alloc] initWithArray:@[@"ss",@"ss",@"s"]];//数组转换为集合 集合特性 :去除重复 NSLog(@"%@",s2); NSSet *s3 = [[NSSet alloc] initWithSet:s1]; NSLog(@"%@",s3); NSSet *s4 = [NSSet setWithObject:@"dgygi"]; NSLog(@"%@",s4); //->->->->->->->->获取集合的个数 NSLog(@"%lu",[s1 count]); //->->->->->->->-> 获取集合中的某个元素 NSLog(@"%@",[s1 anyObject]);//随机某个 //->->->->->->->-> 是否包含某个元素 NSLog(@"%d",[s1 containsObject:@"s1"]); //->->->->->->->-> 取出集合中的所有元素 NSArray *a = [s1 allObjects];//转换为数组 NSLog(@"%@",a); //->->->->->->->->NSMutableSet 可变的 创建可变集合对象 NSMutableSet *s5 = [NSMutableSet setWithSet:s1]; //->->->->->->->->添加元素 [s5 addObjectsFromArray:@[@"ss",@"ds"]]; [s5 addObject:@(32)]; NSLog(@"%@",s5); //->->->->->->->->设置元素 (重置) // [s5 setSet:s4];//相当于重置内容为 s4 中的值 // NSLog(@"%@",s5); //->->->->->->->->删除元素 [s5 removeObject:@"ss"]; NSLog(@"%@",s5); [s5 removeAllObjects]; NSLog(@"%@",s5); //->->->->->->->->NSCountedSet NSCountedSet *cs1 = [NSCountedSet setWithObjects:@"as",@2,@3,@"2",@"3",@"as",@"ad",@"ad",@"ad", nil]; NSLog(@"%@",cs1); NSLog(@"%lu",[cs1 countForObject:@"as"]);//获取某个字符出现的次数 [cs1 removeObject:@"ad"]; //移除 每次只能去掉一个 NSLog(@"%@",cs1); for (id obj in cs1) { NSLog(@"%@",obj); } */
/* SEL 类成员方法的指针 可以理解@selector()就是取类方法的编号,他的行为基本可以等同C语言中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而oc的类不能直接应用函数指针,这样只能做一个@selector语法来取 他的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址) 注意:1@selector是查找当前类(含子类)的方法; */
SEL简介
相关文章推荐
- IOS 高德地图
- 哈希(附哈希直接取余的算法)
- Android学习笔记(十二)BroadcastReceiver的有序广播和优先级
- [转]关于Java对中文排序的问题
- 注册页面
- C++中内联函数何时被编译器禁止?
- [经济学原理|微观部分]厂商理论
- [经济学原理|微观部分]成本理论
- 绝对值排序
- 获取系统时间
- 进制转化(常用的简单转化)
- 多线程和多进程的区别
- 第15章 在应用程序中使用虚拟内存(1)
- 黑马程序员——OC语言基础---@synthesize关键字介绍和使用
- 自定义控件让TextView(Radiobutton)、Button的drawableLeft和drawableRight与文本一起居中显示
- [Training Video - 3] [Groovy in Detail] Non-static and Static functions, initializing log inside class
- [经济学原理|微观部分]生产理论
- 第6周项目2-建立链栈算法库
- String
- 面试题 -- 交换两个变量的值,不借助第三方变量