字典和集合的常用用法-创新互联

首先说几个OC里快速生成对象的几个方法(即语法糖):
(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);
  

创新互联是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站建设、高端网站设计全网营销推广。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都网站建设、成都网站设计、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


文章名称:字典和集合的常用用法-创新互联
本文链接:http://pwwzsj.com/article/gdpji.html