文档章节

OC中的NSDictionary(字典)

D
 Dumplings
发布于 2016/03/31 14:53
字数 1328
阅读 27
收藏 0

字典的基本概念

    OC中的字典(NSDictionaryNSMutableDictionary)是由键-值对组成的数据集合.正如,我们在字典里查找单词的定义一样.

    通过key(键),查找的对应的value(值),key通常是字符串对象,也可以是其他任意类型对象.在一个字典对象中,key的值必须是唯一的.

    此外,字典对象的键和值不可以为空(nil),如果需要在字典中加入一个空值,可以加入NSNull对象


字典中存储方式是无序的,因为字典是没有下标的!!!

字典中存储方式是无序的,因为字典是没有下标的!!!

字典中存储方式是无序的,因为字典是没有下标的!!!


NSDictionary(字典)

字典的初始化

key不要重复,重复了只识别第一个

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //不可变字典
        
        //只有一个键值对的字典初始化
        //将整数1转化成NSNumber类型,用a存放
        NSNumber *a = [NSNumber numberWithInt:1];
        //定义一个只有一个键值对的字典b,value值是"xiaoming", key值是a(其实就是1)
        NSDictionary *b = [NSDictionary dictionaryWithObject:@"xiaoming" forKey:a];
        NSLog(@"%@", b);
        
        //定义一个有多个键值对的字典
        NSDictionary *c = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        NSLog(@"%@", c);
        
    }
    return 0;
}



获取字典键值对的个数

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        
        //定义一个有多个键值对的字典
        NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];

        //使用[a count]获取字典键值对的个数
        NSLog(@"%lu", (unsigned long)[a count]);
        
        
    }
    return 0;
}



根据字典里面的key  获取value

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        
        //定义一个有多个键值对的字典
        NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        
        //根据字典a里面的key@"two", 获取它"two"所对应的value值
        //使用 NSString 来接收!!!
        NSString *b = [a objectForKey:@"two"];
        
        NSLog(@"%@", b);
        
        
    }
    return 0;
}



拿到字典里面相同 value 的所有 key

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        
        //定义一个有多个键值对的字典
        NSDictionary *a = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaoming", @"two", @"xiaoqiang", @"three", @"xiaoming", @"four", nil];
        
        //拿到字典a里面所有valu是@"xiaoming"的key,新建一个数组b来存放
        NSArray *b = [a allKeysForObject:@"xiaoming"];
        
        NSLog(@"%@", b);
        
        
    }
    return 0;
}




NSMutableDictionary(可变字典)

可变字典的初始化 及 赋值

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //可变字典的初始化
        //方法1)给可变字典a初始化了一个空间
        NSMutableDictionary *a = [[NSMutableDictionary alloc]initWithCapacity:10];
        NSLog(@"%@", a);
        //方法2)给可变字典a初始化了一个空间
        NSMutableDictionary *c = [NSMutableDictionary dictionary];
        NSLog(@"%@", c);
        //a,c打印都是空的
        
        
        
        //给可变字典b添加了多个键值对
        NSMutableDictionary *b = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xiaogang", @"four",nil];
        
        NSLog(@"%@", b);
  
    }
    return 0;
}




向可变字典添加一个字典

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //向可变字典添加一个字典
        
        //新建一个可变字典a
        NSMutableDictionary *a=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        //新建一个可变字典b
        NSDictionary *b = [NSDictionary dictionaryWithObject:@"xiaogang" forKey:@"four"];
        //将b字典添加到a字典里面
        //--------------字典里面是无序的,因为字典里面是没有下标的!!!-----------------
        [a addEntriesFromDictionary:b];
        
        NSLog(@"%@", a);
  
    }
    return 0;
}



设置字典字典的value

key一样更新value 

Key不一样添加键值对

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //设置可变字典中的value
        
        //新建一个可变字典a
        NSMutableDictionary *a=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        NSLog(@"%@", a);
        
        //通过可变字典a中的key@"one", 改变它所对应的value值
        [a setValue:@"xiaogang" forKey:@"one"];
        //打印出来:因为字典a里面有key@"one",所以key@"one"所对应的value变成了@"xiaogang"
        NSLog(@"%@", a);
        
        
        //因为字典a里面没有key@"four",所以新添加一个键值对
        [a setValue:@"xiaoliu" forKey:@"four"];
        //打印出来:在原有字典a里面新添加一个键值对four = xiaoliu;
        NSLog(@"%@", a);
  
    }
    return 0;
}




将字典里面的值全部设置成新值

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        
        NSMutableDictionary *b = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaogang", @"four", @"xiaoliu", @"five", nil];
        //将字典a里面的所有值全部设置成了b里面的值,相当于全部设置新值
        [a setDictionary:b];
        
        //打印出a里面是b的值,因为已经全部设置成了b的值
        NSLog(@"%@", a);
        
  
    }
    return 0;
}



根据key删除相对应的value,等于删除字典中这个元素

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", nil];
        
        //根据字典a里面的key@"one", 删除相对应的value值,等于删除这个元素
        [a removeObjectForKey:@"one"];
        
        NSLog(@"%@", a);
        
  
    }
    return 0;
}



根据数组中的key,删除字典中相对应的所有value(等于删除这个元素)

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //根据数组中的key,删除字典中相对应的value(也就是元素)
        
        //新建一个可变字典a
        NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xianggang", @"four", @"xiaoliu", @"five", nil];
        //新建一个数组b,其中包含数组a里面的key
        NSArray *b = [NSArray arrayWithObjects:@"one",@"three",@"five", nil];
        //根据数组b里面的key,删除字典a中相对应的value(也就是元素)
        [a removeObjectsForKeys:b];
        
        NSLog(@"%@", a);
        
  
    }
    return 0;
}




删除字典中所有的元素

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //删除字典中所有的元素
        
        //新建一个可变字典a
        NSMutableDictionary *a = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoming", @"one", @"xiaohong", @"two", @"xiaoqiang", @"three", @"xianggang", @"four", @"xiaoliu", @"five", nil];
        
        //删除字典中所有的元素
        [a removeAllObjects];
        
        NSLog(@"%@", a);
        
  
    }
    return 0;
}




© 著作权归作者所有

D
粉丝 0
博文 87
码字总数 42098
作品 0
西安
程序员
私信 提问
Foundation框架之集合

一、NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组。 C语言数组有一个缺点即数...

DevShaw
2016/01/07
13
0
OC之之NSDictionary/NSMutableDictionary

NSDictionary/NSMutableDictionary特点: (1)里存储的东西都是键值对 (2)可以像数组一样快速创建(适用NSDictionary):@{key1 : value1, key2 : value2} (3)快速访问元素:字典名 [k...

feng_blog
2015/09/02
83
0
OC语言自学《十二》---- OC(Foundation框架部分知识总结)

NSRange 表示一个范围 主要用来操作字符串 CGPoint、NSPoint 通过设置x坐标和y坐标来设置某个点 IOS设备的x和y从左上角开始,y值往下面增加,x值往右面增加 CGSize、NSSize 表示一个矩形尺寸...

罗眯眯
2014/04/09
2K
0
Swift实际开发中遇到的小问题

从上周开始, 正式使用Swift语言进行实际项目的开发, 虽然之前Swift的语法已经了解过, 并且写过几个简单的小Demo, 但是在实际应用到了公司项目中还是遇到了一些小问题. 主要是Swift与OC语法对...

Sunxb
2016/12/02
0
0
iOS Json解析框架之MJExtension使用详解

Plist → 模型数组 控制器中引用#import "MJExtension.h" 模型数组 = [模型类名 objectArrayWithFilename:@"文件名.plist"]; 2. 对NSLog的优化,解决 调试时,打印模型,只打印出内存地址的问......

Daniel_s
2015/12/05
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部