字典是以键值对的形式来存储数据 key value

1 NSDictionary 字典

1.1 创建字典,不可变的

NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaozhe",@"name", nil];
NSLog(@"dic %@",dic);
2016-08-14 14:44:17.460 07-字典类[2325:547877] dic {
name = xiaozhe;
}

1.2 快捷创建方式

NSDictionary * dic2 = @{ @"one":@"1",@"two":@"2"};
NSLog(@"dic2 %@",dic2);
2016-08-14 14:44:17.461 07-字典类[2325:547877] dic2 {
one = 1;
two = 2;
}

1.3 字典中可以存任意数据类型

字典的顺序不是自然顺序

NSArray * array = @[@"one",@"two"];

NSDictionary * dic3 = @{
@"one":@"1",
@"num":[NSNumber numberWithInt:10],
@"aaa":dic2,
@"bbb":dic,
@"ar1":array }; NSLog(@"dic3 %@",dic3);
016-08-14 14:44:17.461 07-字典类[2325:547877] dic3 {
aaa = {
one = 1;
two = 2;
};
ar1 = (
one,
two
);
bbb = {
name = xiaozhe;
};
num = 10;
one = 1;
}

1.4 获得字典的长度

NSLog(@"count %ld",dic3.count);

1.5 从字典中取值

NSString * str  = [dic3 objectForKey:@"one"];
NSLog(@"str %@",str); NSDictionary * dicTmp = [dic3 objectForKey:@"aaa"];
NSLog(@"dicTmp %@",dicTmp);
NSArray * arrayTmp = [dic3 objectForKey:@"ar1"];
NSLog(@"arrayTmp %@",arrayTmp);

1.6 遍历

取出所有的key值

NSArray * allkeys = [dic3 allKeys];
NSLog(@"allkeys %@",allkeys); for (int i = 0; i < allkeys.count; i++)
{
NSString * key = [allkeys objectAtIndex:i]; //如果你的字典中存储的多种不同的类型,那么最好用id类型去接受它
id obj = [dic3 objectForKey:key];
NSLog(@"obj %@",obj);
}

枚举器

NSEnumerator * enumerator =  [dic3 objectEnumerator];

id value;
while (value = [enumerator nextObject]) {
NSLog(@"value %@",value);
}

2 NSMutableDictionary 可变字典

2.1 创建一个可变长度字典

NSMutableDictionary * muDic = [[NSMutableDictionary alloc] initWithCapacity:0];

2.2 向字典中存储数据

[muDic setObject:@"1" forKey:@"one"];
[muDic setObject:@"2" forKey:@"two"];
[muDic setObject:@"3" forKey:@"three"];

2.3 删除

[muDic removeObjectForKey:@"one"];

2.4 全部删除

[muDic removeAllObjects];

给一个 Student 类

@interface Student : NSObject

@property (nonatomic,assign) int age;
@property (nonatomic,strong) NSString * name; - (id)initWithName:(NSString *)name andAge:(int)age; @end

@implementation Student - (id)initWithName:(NSString *)name andAge:(int)age
{
if (self = [super init])
{
_name = name;
_age = age;
}
return self;
} - (NSString *)description
{
return [NSString stringWithFormat:@"name %@ age %d",_name,_age];
} @end
Student * stu1 = [[Student alloc] initWithName:@"xiaoher" andAge:20];
Student * stu2 = [[Student alloc] initWithName:@"alex" andAge:50];
Student * stu3 = [[Student alloc] initWithName:@"xiaoli" andAge:10]; [muDic setObject:stu1 forKey:@"s1"];
[muDic setObject:stu2 forKey:@"s2"];
[muDic setObject:stu3 forKey:@"s3"];
//在向字典中存储数据的时候,一定要保证key值是唯一的
//[muDic setObject:stu3 forKey:@"s3"];
//[muDic setObject:stu3 forKey:@"s3"];
//[muDic setObject:stu3 forKey:@"s3"];

2.5 使用for循环遍历字典

NSArray * allkeys = [muDic allKeys];

for (int i = 0; i < allkeys.count; i++)
{
NSString * key = [allkeys objectAtIndex:i];
Student * stu = [muDic objectForKey:key];
NSLog(@"stu %@",stu);
};

2.6 使用枚举器

NSEnumerator * enumerator = [muDic objectEnumerator];
Student * tmp;
while (tmp = [enumerator nextObject]) {
NSLog(@"tmp %@",tmp);
}

NSDictionary字典创建,获取,遍历,可变字典的删除 - iOS的更多相关文章

  1. json对象数组的创建、遍历、添加、删除、修改、js的splice()用法

    本文链接:https://blog.csdn.net/houfengfei668/article/details/79843625 )第二种方式:手动构造json对象数组 )for )用splice方 ...

  2. OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法

    字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 ...

  3. OC基础 可变字典与不可变字典的使用

    OC基础 可变字典与不可变字典的使用 1.不可变字典 1.1创建不可变字典 //创建字典 //注意: //1,元素个数是偶数 //2,每两个元素是一个键值对 //3,值在前,键在后 NSDiction ...

  4. python中字典dic详解-创建,遍历和排序

    原文地址:http://www.bugingcode.com/blog/python_dic_create_sort.html 在python的编程中,字典dic是最典型的数据结构,看看如下对字典的操 ...

  5. Objective-C 字典、可变字典

    字典相当于c++ stl中的map 字典NSDictionary #import <UIKit/UIKit.h> #import "AppDelegate.h" int ...

  6. iosOC不可变字典和可变字典

    //key 和 value 都属于(id)对象类型 //key常用字符串NSString来表示 //存储数值型 一般可用 NSString //int  age ->@(age) //  [di ...

  7. objective-c可变字典

     1 #pragma mark *****************************字典********************************  2 //        字典:通过ke ...

  8. python3字典:获取json响应值来进行断言

    前言:在接口自动化测试中,最后都是需要将返回结果进行断言.本文按照实际情况举例说明字典各种操作,以及如何提取响应数据来进行断言 1.dict = {'code': '200', 'message': ...

  9. python3字典:获取json响应值来进行断言的用法详解

    在Python中我们做接口经常用到一些json的返回值我们常把他转化为字典,在前面的python数据类型详解(全面)中已经谈到对字典的的一些操作,今天我们就获取json返回值之后,然后转化为字典后的获 ...

随机推荐

  1. CSS参数介绍

    原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 行高       line-height: 16px 宽度       (具体位置)-width: 16px 文字 ...

  2. echarts3样例

    <script type="text/javascript" src="echarts.min.js"></script> <di ...

  3. itext A4纸张横向创建PDF

    import java.awt.Color;import java.io.FileOutputStream;import java.io.IOException; import com.lowagie ...

  4. android layout

    android的视图分为两类,一类是布局,另一个类是控件 一.LinearLayout(线性布局) 最常用布局之一,线性布局的特性是每添加一个控件默认会在上个控件的下面占一行. <LinearL ...

  5. mmap和MappedByteBuffer

    1.MappedByteBuffer是DirectByteBuffer的子类 2.MappedByteBuffer使用的是mmap技术.MappedByteBuffer将文件映射为内存,也可能会被存储 ...

  6. CAN 和 CANopen的区别和联系

    1.CAN与CANopen的共同点与不同点:  CAN只定义了物理层与链路层,而没有定义用户层,用户可根据自己的需要定义一些网络上的通信约定:  CANopen是在CAN的基础上定义了用户层,即规定了 ...

  7. KS103超声波测距模块

    max232:电平转换芯片,将电脑的RS-232标准串口(高+12V,低-12V)转换为(高+5V,低0V). 电脑串口(RS -232) => 单片机串口(TTL串口) SIPEX SP323 ...

  8. 如何快速的知道Maven插件的命令行输入参数

    用命令行使用Maven的插件时,-D表示属性的输入,-P表示构建配置文件的输入. 比如要使用package生命周期阶段对Application项目进行打包jar时,查找方式如下: 1.由于packag ...

  9. VC/MFC中计算程序运行时间

    转自原文VC/MFC中计算程序运行时间 说明,这四种方法也分别代表了类似的实现,在MFC中,所可以从哪些类集合去考虑. 方法一 利用GetTickCount函数(ms) CString str; lo ...

  10. 一个球,初始高度100,每次落下回弹一半高度,求第n次落下球走的距离

    def get_height(n): if n==1: eturn 150 return 100+sum([200*pow(0.5,i) for i in range(1,n)])+100*pow(0 ...