/*_______________不可变字(NSDictionary)____________*/
    
    //1.字典的创建
    //值(value)
    NSArray *array1 = @[@"zhangsan",@"zhangfei",@"zhangchaoyang"]; //zhang
    NSArray *array2 = @[@"lisi",@"lining",@"lilei"]; //li
    
    //两个元素:zhang:array1  li:array2
    NSDictionary *dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li", nil];
//    NSDictionary *dic2 = [NSDictionary dictionaryWithObjectsAndKeys:<#(nonnull id), ...#>, nil]
    NSLog(@"dic1:%@",dic1);
    
    //通过已有的字典给现在的字典初始化
    NSDictionary *dic2 = [[NSDictionary alloc] initWithDictionary:dic1];
    NSLog(@"dic2:%@",dic2);
    
    //2.获取字典中的元素个数
    NSUInteger count = dic1.count;
    NSLog(@"count:%ld",count);
    
    //3.获取字典中的所有key(键)
    NSArray *keys = [dic1 allKeys];
    NSLog(@"key:%@",keys);
    
    //4.获取所有的value(值)
    NSArray *values = [dic1 allValues];
    NSLog(@"values:%@",values);
    
    //5.通过key取得对应的value
    NSArray *value = [dic1 objectForKey:@"zhang"];
    NSLog(@"value:%@",value);
    
    //注意:在字典中key唯一,但是value可以相同
    NSDictionary *dic3 = [[NSDictionary alloc] initWithObjectsAndKeys:array1,@"zhang",array2,@"li",array1,@"li1", nil];
    NSLog(@"%@",dic3);
    
/*____________________优化语法___________________________*/
    //初始化
    NSDictionary *dic4 = @{
                           @"zhang":array1,
                           @"li":array2
                           };
    
    NSLog(@"dic:%@",dic4);     //根据key获取vlaue
    NSArray *v = dic4[@"zhang"];
    NSLog(@"v:%@",v);
    
/*______________可变字典(NSMutableDictionary)________*/
    //创建可变字典
    NSMutableDictionary *mutDic1 = [[NSMutableDictionary alloc] initWithCapacity:];
    
    //1.添加元素
//    [mutDic1 setObject:array1 forKey:@"zhang"];
    
//    [mutDic1 setObject:array2 forKey:@"li"];
    //注意:如果在添加键值对的时候,如果添加了已有的key,则会覆盖以前的数据
//    [mutDic1 setObject:@"liyoubing" forKey:@"li"];
    
    //将dic1中的所有键值对添加到mutDic1
    [mutDic1 addEntriesFromDictionary:dic1];
    
    //2.删除
    //删除所有元素
//    [mutDic1 removeAllObjects];
    //根据key删除
//    [mutDic1 removeObjectForKey:@"li"];
    
    //根据多个key删除数据
//    [mutDic1 removeObjectsForKeys:@[@"li",@"zhang"]];
    
    
    NSLog(@"mutDic1:%@",mutDic1);
    
    //----------字典的遍历----------     //方式一
    //获取所有的key
    NSArray *keyArray = mutDic1.allKeys;
    for (int i=; i<keyArray.count; i++) {
        
        //1.获取指定的key
        NSString *key = keyArray[i];
        
        //2.根据key->value
//        mutDic1 objectForKey:<#(nonnull id)#>
        NSArray *value = mutDic1[key];
        
        NSLog(@"key:%@ value:%@",key,value);
        
    }
    
    //方式二:快速遍历
    for (NSString *key in mutDic1) {
        //根据key->value
        
        NSArray *value = [mutDic1 objectForKey:key];
        NSLog(@"key:%@ vlaue:%@",key,value);
    }
    
    /*
     字典是无序的
     */

Foundation ----->NSDictionary的更多相关文章

  1. 【IOS】IOS高速入门之OC语法

    Objective-C 是 C 语言的超集 您还能够訪问标准 C 库例程,比如在stdlib.h和stdio.h中声明的那些例程. Objective-C 还是一种很动态的程序设计语言,并且这样的动态 ...

  2. Object-C 新手教程

    大纲 開始吧 下载这篇教学 设定环境 前言 编译 hello world 创建 Classes @interface @implementation 把它们凑在一起 具体说明... 多重參数 建构子( ...

  3. [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换

    1.JSON字符串与字典(Dictionary)之间的相互转换 import Foundation //JSON字符串转换为字典(Dictionary) func getDictionaryFromJ ...

  4. NSKeyValueObserving.m

    https://github.com/farcaller/cocotron/blob/af740de86c9bee84c59ffc74d27e5df9e22e1391/Foundation/NSKey ...

  5. kvc和kvo的使用情况的了解

    了解cocoa:Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之中的一个(其他四个是Carbon.POSIX.X11和Java). 苹果的面向对象开 ...

  6. iOS之CALayer属性简介

    /* CoreAnimation - CALayer.h Copyright (c) 2006-2017, Apple Inc. All rights reserved. */ #import < ...

  7. Foundation框架--字典( NSDictionary NSMutableDictionary )

    基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...

  8. Objective-C:Foundation框架-常用类-NSDictionary

    与NSString.NSArray一样,NSDictionary是不可变的,其对应可变类型为NSMutableDictionary.其用法如下: #import <Foundation/Foun ...

  9. Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型

    Foundation框架之NSArray.NSDictionary.NSSet及其Mutable类型 目录 概述——对Foundation框架集合类的理解 NSArray NSDictionary N ...

随机推荐

  1. 5G扫盲

    打开手机,连接wifi,如果想要下载一部自己喜欢的高清电影,一般需要半小时左右的时间.5G时代,你可能花费不到1分钟就能完成这些操作.更快的网速.更多的应用意味着更广阔的市场空间,也意味着更激烈的市场 ...

  2. PHP list,explode的使用

    PHP list,explode的使用 <?php header("Content-type: text/html; charset=utf-8"); echo " ...

  3. C#调试心经(1)(转)

    我们在做程序开发时,难免会遇到错误异常.如何快速地找到出错的地方.分析错误的原因以及找到解决问题的方案,是许多初级程序员困扰的问题,这也正是经验的宝贵之处.下面我将简单介绍在Visual Studio ...

  4. [Spring MVC] - 500/404错误处理

    Spring MVC中404 找不到页面错误可以直接使用web.xml中配置: 在<web-app/>节点内加入: <error-page> <error-code> ...

  5. Flexigrid从对象中加载数据

    (有问题,在找…………) Flexigrid是用来动态加载数据的一种比较好(老)的Jquery表插件,然后有些时候,我们需要其从本地或者jQuery对象中加载数据,比如有这么个需求,页面显示中有两个表 ...

  6. webpack-vue搭建,部署到后端

    1.安装npm(安装node自带npm),npm安装成功测试 2.安装cnpm,也可以装nvm-windows 步骤1,打开user/admin/.npmrc,输入,也可以用命令 步骤2,输入npm ...

  7. Windows平台分布式网站系统应用(转)

    概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...

  8. iis网站发布相关问题

    最近在公司的服务器上发布了一个简单的web应用,整个做下来到上线用了将近2天时间,期间出现了各种问题,现在发出来供大家参考: 1.iis上发布后出现访问网站,出现“IIS服务器被配置为不列出此目录的内 ...

  9. Sql Server中Float格式转换字符串varchar方法(转)

    1.[Sql Server](70)  SELECT CONVERT(varchar(100), CAST(@testFloat AS decimal(38,2)))SELECT STR(@testF ...

  10. MyEclipse中代码格式化后自动换行

    MyEclipse的默认设置里面各种坑人,怎么不方便怎么设置,用户体验差到极点.今天又遇到个问题,按下Ctrl + Shift + F 后,自动格式化后的代码原来只有一行,结果变成了3行,看着都想吐. ...