字典是以键值对的形式来存储数据 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. 集合-LinkList

    参考:http://www.cnblogs.com/skywang12345/p/3308807.html Consumer.class   消费者接口 参考:https://www.jianshu. ...

  2. PHP的Trait机制

    PHP的Trait机制 Trait介绍: 1.自PHP5.4起,PHP实现了一种代码复用的方法,称为trait.2.Trait是为类似PHP的单继承语言二准备的一种代码复用机制.3.Trait为了减少 ...

  3. 不拖控件的asp.net编程方法——第1回

    以前写的asp.net程序基本上都用了webfrom的控件编写的,当然有个好处就是易入门.快速效率高,但感觉自己这了几个小系统,还是没学到什么东西,感觉心里没底,因为都是封装好的东西,拿来就用的,功能 ...

  4. spring data jpa 查询部分字段

    @Query("select new map(ah as ah,salq as sqlq,yg as yg, bg as bg,ay as ay) FROM Aj where ahdm=?1 ...

  5. Codeforces 959 E Mahmoud and Ehab and the xor-MST

    Discription Ehab is interested in the bitwise-xor operation and the special graphs. Mahmoud gave him ...

  6. IoT设备程序开发及编译环境搭建初体验

    引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...

  7. [Testing] Config jest to test Javascript Application -- Part 3

    Run Jest Watch Mode by default locally with is-ci-cli In CI, we don’t want to start the tests in wat ...

  8. svn简单介绍

    版本号控制(Revision control)是维护project蓝图的标准做法,能追踪project蓝图从诞生一直到定案的过程.是一种记录若干文件内容变化.以便将来查阅特定版本号修订情况的系统. 能 ...

  9. memchached你知道和不知道的事

  10. Office转SWF的一些感想(Office2007和Office2010)

    Office2007需要借助SaveAsPDFandXPS的插件完成,Office2010可以直接兼容. Office2PDF主要采用的是 Microsoft.Office.Interop的方式进行, ...