OC字典和集合的常用用法-创新互联
首先说几个OC里快速生成对象的几个方法(即语法糖):
专注于为中小企业提供成都网站建设、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业白云鄂免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。(1) @ + 数字 即快速将基本数据类型转换为NSNumber类型的对象,如:@20, (@后面直接跟了一个确切的数字) 如果是一个变量即 int a = 10 ,则为:@(a)
(2) 数组对象 = @ + [ ](中括号里的内容时对象), 快速创建数组对象 例如:NSArray *arr = @[@"name",@"number",@22,@7]; 这样创建的数组是不可改变的数组
(3) 数组名 + [下标] 快速获取数组下标对应的元素, 如: arr[1] 就是获取数组arr中的第二个元素number
一, 字典
字典: 也是一个大容器,用来存储多个数据,而且存储的数据具有一一对应关系,(使用key来标识value值) ,字典里的key是唯一的,一个key只能对应一个value,但是一个value可以对应多个key.对于字典的一对键值对(即key-value)叫做字典的一个元素,也叫做一个条目,它存储的内容不限制对象类型,但是只能用来存储对象同时字典是无序的,
(一), 不可改变字典 NSDictionary
这里以下的例子都以
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
NSLog(@"%@",dic); 为例,不再赘述
1,创建字典对象
1),便利构造器 dictionaryWithObjectsAndKeys:
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
NSLog(@"%@",dic);
2),初始化方法 initWithObjectsAndKeys:
NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"Lili",@"name",@20,@"height",@12,@"age", nil];
NSLog(@"%@",dic1);
2,求字典元素个数 count 其实 count 这个方法在数组里,在字典里,在集合里都有,并且都是用来计算相应容器(数组,字典,集合等)的元素个数
NSUInteger count = [dic count];
NSLog(@"%lu",count);
3,获取所有的key allKeys
NSArray *keys = [dic allKeys];
NSLog(@"%@",keys);
4,根据key获取对应的value objectForKey: 返回值为字符串对象 这里objectForKey后面没有加s 说明只是取出其中的一个元素,而不是全部,即体现了OC里方法名的见名知意,我们在学习过程中可以根据方法名大概猜测出方法的实现内容
NSString *name = [dic objectForKey:@"name"];
NSLog(@"%@",name);
NSNumber *age = [dic objectForKey:@"age"];
NSLog(@"%@",age);
NSNumber *height = [dic objectForKey:@"height"];
NSLog(@"%@",height);
下面一个例子是把字典里的key的对应值都取出来存在一个数组里 allValues 返回值是数组对象
NSArray *values = [dic allValues];
NSLog(@"%@",values);
5,字典快速遍历;
forin在遍历数组时,遍历的是数组中的每个元素, 在对字典快速遍历时,遍历的是字典中的key,然后通过key获取对应的value值 因此forin 里type对应的类型是key对应的对象类型
for (NSString *dic1 in dic) {
//检索到key时,通过objectForKey:获取对应的value值
NSLog(@"%@",[dic objectForKey:dic1]);
}
(二),可改变字典 NSMutableDictionary
1,创建字典对象
便利构造器 dictionaryWithObjectsAndKeys:
NSMutableDictionary *mudic =[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Lili",@"name1",@"Frank",@"name2",@12,@"age1",@14,@"age2", nil];
2,求字典元素个数 count
NSLog(@"%lu",[mudic count]);
3,删除元素 removeObjectForKey: 给定一个key值删除对应的value值,
removeAllObjects 删除所有条目
[mudic removeObjectForKey:@"name2"];
NSLog(@"%@",mudic);
[mudic removeAllObjects];
NSLog(@"%@",mudic);
4,添加元素 setObject: forKey:
[mudic setObject:@"Duke"forKey:@"name3"];
NSLog(@"%@",mudic);
5,修改key对应的value setObject: forKey: 跟添加元素是同一个方法
在这里setObject:forKey: 根据指定的key查找是否有对应的value如果没有就添加进去即添加元素,若存在该key对应的value则将其修改为指定的value值,即修改对应的value
[mudic setObject:@"Frank"forKey:@"name3"];
NSLog(@"%@",mudic);
(三)NSSet不可变集合
集合也是一个大容器,具有确定性,唯一性,无序性 .里面可以存储任何类型的对象
1,创建一个集合对象
(1)b便利构造器 setWithObjects:
NSSet *set1 = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"age1",@14,@"age2", nil];
NSLog(@"%@",set1);
(2)初始化方法 initWithObjects:
set1 = [[NSSetalloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];
NSLog(@"%@",set1);
2,获取集合中的某个元素 anyObject 第一次随机取出一个元素后,再多次取出,每次都和第一次取出的一样
NSString *set = [set1 anyObject];
NSLog(@"%@",set);
NSString *set5 = [set1 anyObject];
NSLog(@"%@",set5);
NSString *set2 = [set1 anyObject];
NSLog(@"%@",set2);
NSString *set3 = [set1 anyObject];
NSLog(@"%@",set3);
NSString *set4 = [set1 anyObject];
NSLog(@"%@",set4);
3,获取元素个数 count
NSLog(@"%lu",[set1 count]);
4,判断集合中是否包含某个对象 containsObject:
NSLog(@"%d",[set1 containsObject:@"1"]);
(四),可改变集合 NSMutableSet
1,创建一个集合对象 setWithObjects:
NSMutableSet * muset = [NSMutableSet setWithObjects:@"1",@"2",@"3",@"4",@"age1",@14,@"age2", nil];
1,添加元素 addObject:
[muset addObject:@"88"];
NSLog(@"%@",muset);
2,删除元素 removeObject:
[muset removeObject:@"88"];
NSLog(@"%@",muset);
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻名称:OC字典和集合的常用用法-创新互联
分享地址:http://azwzsj.com/article/shhco.html