Foundation ----->NSDictionary
/*_______________不可变字(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的更多相关文章
- 【IOS】IOS高速入门之OC语法
Objective-C 是 C 语言的超集 您还能够訪问标准 C 库例程,比如在stdlib.h和stdio.h中声明的那些例程. Objective-C 还是一种很动态的程序设计语言,并且这样的动态 ...
- Object-C 新手教程
大纲 開始吧 下载这篇教学 设定环境 前言 编译 hello world 创建 Classes @interface @implementation 把它们凑在一起 具体说明... 多重參数 建构子( ...
- [Swift]JSON字符串与字典(Dictionary)、数组(Array)之间的相互转换
1.JSON字符串与字典(Dictionary)之间的相互转换 import Foundation //JSON字符串转换为字典(Dictionary) func getDictionaryFromJ ...
- NSKeyValueObserving.m
https://github.com/farcaller/cocotron/blob/af740de86c9bee84c59ffc74d27e5df9e22e1391/Foundation/NSKey ...
- kvc和kvo的使用情况的了解
了解cocoa:Cocoa是苹果公司为Mac OS X所创建的原生面向对象的API,是Mac OS X上五大API之中的一个(其他四个是Carbon.POSIX.X11和Java). 苹果的面向对象开 ...
- iOS之CALayer属性简介
/* CoreAnimation - CALayer.h Copyright (c) 2006-2017, Apple Inc. All rights reserved. */ #import < ...
- Foundation框架--字典( NSDictionary NSMutableDictionary )
基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...
- Objective-C:Foundation框架-常用类-NSDictionary
与NSString.NSArray一样,NSDictionary是不可变的,其对应可变类型为NSMutableDictionary.其用法如下: #import <Foundation/Foun ...
- Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型
Foundation框架之NSArray.NSDictionary.NSSet及其Mutable类型 目录 概述——对Foundation框架集合类的理解 NSArray NSDictionary N ...
随机推荐
- Entity Framework 摘记
1.设置隔离级别 var transactionOptions = new System.Transactions.TransactionOptions(); transactionOptions.I ...
- 在Mac上使用vim的几个命令
Mac上面编辑文件的命令总是记不住,留一个参考!!! 如果是vim,则:Esc 退出编辑模式,输入以下命令: :wq 保存后退出vi,若为 :wq! 则为强制储存后退出(常用) :w 保存但不 ...
- Window memcache 使用
一.memcache配置 1. 下载memcache 32位系统 1.2.5版本:http://static.runoob.com/download/memcached-1.2.5-win32-bin ...
- Java基础--serialVersionUID
Java基础--serialVersionUID serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性.有两种生成方式: 一个是默认的1L,比 ...
- sql server中批量插入与更新两种解决方案分享
若只是需要大批量插入数据使用bcp是最好的,若同时需要插入.删除.更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了 bcp方式 复制代码 代码如下: /// ...
- ubuntu死机怎么办
在使用ubuntu的时候由于各种复杂的因素,如软件不兼容,误操作等问题导致"死机"怎么办呢?下面我们来看看如何解决这问题... 可以打开终端模拟器 1 ctrl+alt+t ...
- day26:面向对象进阶:set、get、del反射和内置
三 __setattr__,__delattr__,__getattr__ __开头的都是内置的,不定义系统都会有.如果自己定义的话,就会覆盖系统内置的,执行自定义的部分(是否有完成设置的语法,有的话 ...
- iOS UIButton单双击处理响应不同的方法
//显示目标 双击显示当前用户坐标位置 UIButton * btnShowDistination = [[UIButton alloc]initWithFrame:CGRectMake(, SCRE ...
- Python基础语法(二)
类中的方法定义前如果有 @staticmethod 则此方法通过类名调用,如:dict.fromkeys() : 如果没有,则此方法通过对象调用 三元运算 name=值1 if 条件 else 值2 ...
- [ActionScript 3.0] 将组件 SWC 文件导入 Flash
在向其它开发人员分发组件时,您可以包含以下说明,以便他们能够立即安装和使用组件. 导入 SWC 文件: 将 SWC 文件复制到 Configuration/Components 目录中. 重新启动 ...