OC之之NSDictionary/NSMutableDictionary

NSDictionary/NSMutableDictionary特点:

(1)里存储的东西都是键值对

(2)可以像数组一样快速创建(适用NSDictionary):@{key1 : value1,  key2 : value2}

(3)快速访问元素:字典名 [key]

比如可以这样为指定key赋值:

dic [@”key1”] = @”value1”;

快速获取key所对应的value:

NSString *name = dic[@”name”];//存储的是String

或者:

NSDictionary *userdic = dic[@”user”];//存储的是NSDictionary

NSString *name = userdic [@”name”];

(4)字典不允许有相同的key,但允许有相同的value(Object)

(5)字典是无序的

1、不可变词典NSDictionary

字典初始化:

(1)以一个元素初始化

NSDictionary *dic = [NSDictionary dictionaryWithObject:numObj forKey:@"key"];

(2)初始化两个元素

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:

numObj, @"valueKey", numObj2, @"value2",nil];

(3)初始化新字典,新字典包含otherDic

NSDictionary *dic = [NSDictionary dictionaryWithDictionary:otherDic];

(4)以文件内容初始化字典

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];

(1)也可创建多维字典

使用快速创建的方式:

NSArray *persons = @[

          @{@"name" : @"jack", @"qq" : @"432423423", @"books": @[@"5分钟突破iOS编程", @"5分钟突破android编程"]},

    @{@"name" : @"rose", @"qq" : @"767567"},

    @{@"name" : @"jim", @"qq" : @"423423"},

    @{@"name" : @"jake", @"qq" : @"123123213"}

];

访问:

NSLog(@"%@", persons[1][@"qq"]);

上述代码含义:

先取出1位置对应的字典

再取出字典中qq这个key对应的数据

常用方法:

(1)获取字典数量

NSInteger count = [dic count];

(2)通过key获取对应的value对象

NSObject *valueObj = [dic objectForKey:@"key"];

(3)将字典的key转成枚举对象,用于遍历

NSEnumerator *enumerator = [dic keyEnumerator];

(4)获取所有键的集合

NSArray *keys = [dic allKeys];

(5)获取所有值的集合

NSArray *values = [dic allValues];

2、可变数组NSMutableDictionary

(1)初始化一个空的可变字典

NSMutableDictionary *dic2 = [NSMutableDictionary

dictionaryWithObjectsAndKeys:@"v1",@"key1",@"v2",@"key2",nil];

 

NSDictionary *dic3 = [NSDictionary dictionaryWithObject:

@"v3" forKey:@"key3"];

(2)向字典2对象中添加整个字典对象3

[dic2 addEntriesFromDictionary:dic3];

(3)向字典2对象中最佳一个新的key3和value3

[dic2 setValue:@"value3" forKey:@"key3"];

(4)初始化一个空的可变字典

NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];

(5)将空字典1对象内容设置与字典2对象相同

[dic1 setDictionary:dic2];

(6)将字典中key1对应的值删除

[dic1 removeObjectForKey@"key1"];

NSArray *array = [NSArray arrayWithObjects:@"key1", nil];

(7)根据指定的数组(key)移除字典1的内容

[dic2 removeObjectsForKeys:array];

(8)移除字典所有对象

[dic1 removeAllObjects];

 

3、遍历字典

(1)快速枚举

for (id key in dic){

     id obj = [dic objectForKey:key];

     NSLog(@"%@", obj);

}

(2)一般枚举

NSArray *keys = [dic allKeys];

inr length = [keys count];

for (int i = 0; i < length;i++){

     id key = [keys objectAtIndex:i];

     id obj = [dic objectForKey:key];

     NSLog(@"%@", obj);

}

(3)通过枚举类型枚举

NSEnumerator *enumerator = [dic keyEnumerator];

id key = [enumerator nextObject];

while (key) {

        id obj = [dic objectForKey:key];

        NSLog(@"%@", obj);

        key = [enumerator nextObject];

}

时间: 2025-01-21 04:37:37

OC之之NSDictionary/NSMutableDictionary的相关文章

[iphone] NSDictionary / NSMutableDictionary 及 NSArray / NSmutableArray (实例)

NSDictionary 和 NSArray一样是不可变的对象.用来实现字典集合,在给定关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的对象).  NSDictionary使用类方法 dictionaryWithObjectAndKeys: 来创建字典:使用方法objectForKey: 来获取字典中的值.  Java代码   NSDictionary *dict = [NSDictionary dictionaryWithObjectAndKeys:@"just&qu

NSDictionary NSMutableDictionary

注: iOS 6 新的快捷初始化写法: NSDictionary: NSDictionary *dic = @{@"键":@"值",@"键1":@"值1"}; NSMutableDictionary: NSMutableDictionary *MDic = [@{@"键":@"值",@"键1":@"值1"} mutableCopy]; 1:基础初始

NSDate-日期类&amp;nbsp;OC——第七天(1)

1.总结前面学习的Oc中的几种数据类型 NSInteger NSUinteger CGFloat NSString NSMutableString NSSArray NSMutableArray NSDictionary NSMutableDictionary NSSet NSMutableSet 2.NSDate 日期类,继承自NSObject ,代表的是一个时间点 NSDate *date = [NSDate date]; NSLoge(@"%@",date);//显示的是格林尼治

NSDate-日期类&amp;amp;nbsp;OC——第七天(1)

1.总结前面学习的Oc中的几种数据类型 NSInteger NSUinteger CGFloat NSString NSMutableString NSSArray NSMutableArray NSDictionary NSMutableDictionary NSSet NSMutableSet 2.NSDate  日期类,继承自NSObject ,代表的是一个时间点 NSDate *date = [NSDate date]; NSLoge(@"%@",date);//显示的是格林尼

iOS中几种数据持久化方案:我要永远地记住你!

概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 沙盒 在介绍各种存储方法之前,有必要说明以下沙盒机制.iOS程序默认情况下只能访问程序自己的目录,这个目录被称为"沙盒". 1.结构 既然沙盒就是一个文件夹,那就看看里面有什么吧

使用NSHashTable存储引用对象

NSHashTable       我们使用集合(NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSSet,NSMutableSet)存储对象时会对其强引用(你可以使用单例的集合存储数据试一下咯),有时候我们不想这样子,怎么办呢?         那就使用NSHashTable这个集合吧,它的使用方法与NSSet完全相似,不同的是,它的一种初始化方式是weakObjectsHashTable,专门用来存储弱引用对象,不会持有它,那

iOS开发之JSON &amp; XML

1.概述 JSON (1) 作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 (2) 基于JavaScript的一个子集 (3) 易读性略差,编码手写难度大,数据量小 (4) JSON格式取代了XML给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁琐复杂的数据节点查找中 XML (1)可扩展标记语言 (2)用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源

iOS7应用开发4、Foundation框架

1.动态绑定:id类型的对象,表示指向未知类型对象的指针: 指向对象的实际类型在运行时指定.在使用时,注意check该对象是否响应调用的方法(respondsToSelector).可以将一个静态类型的对象付给id类对象. [NSArray firstObject]等函数返回值本质上就是id类型. id本身就是指针类型,所以不存在id *pObject这种写法. 当向id类型的对象发送消息时,编译时不会出现警告,但是若其实际指向的对象没有实际上没有那个方法,则在运行时会崩溃. 2.关于内省(in

Lua脚本语言入门笔记_Lua

什么是Lua Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发. 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行.Lua并没