NSArray、NSSet、NSDictionary

  1. /*
  2. 集合
  3. 1.NSArray\NSMutableArray
  4. * 有序
  5. * 高速创建(不可变):@[obj1, obj2, obj3]
  6. * 高速訪问元素:数组名[i]
  7. 2.NSSet\NSMutableSet
  8. * 无序
  9. 3.NSDictionary\NSMutableDictionary
  10. * 无序
  11. * 高速创建(不可变):@{key1 : value1, key2 : value2}
  12. * 高速訪问元素:字典名[key]
  13. */

字典创建

  1. #import <Foundation/Foundation.h>
  2. int main(int argc, const char * argv[]) {
  3. @autoreleasepool {
  1. NSLog(@"************************** ******************************");
  2. //方式一:
  3. NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
  4. //方式二:
  5. NSArray *keys = @[@"name", @"address"];
  6. NSArray *objects = @[@"jack", @"BeiJing"];
  7. NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
  8. NSLog(@"集合二结果为:%@",dict2);
  9. //方式三:值健对
  10. NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:
  11. @"jack", @"name",
  12. @"BeiJing", @"address",
  13. @"88888888", @"qq", nil];
  14. NSLog(@"集合三结果为:%@",dict3);

字典高速初始化

  1. NSLog(@"************************ 字典高速初始化 **************************");
  2. //健值对
  3. NSDictionary *dict5 = @{@"name" : @"jack", @"address" : @"Beijing"};
  4. id obj = dict5[@"name"];
  5. NSLog(@"%@", obj);
  6. // 返回的是键值对的个数
  7. NSLog(@"%ld", dict5.count);

字典创建实例

  1. NSLog(@"************************ 字典创建实例 ****************************");
  2. //界面语言,程序窗口标题,确定按钮文字,提示输入
  3. NSArray* values=[NSArray arrayWithObjects:@"欢迎登录",@"登录",@"请输入username:", nil];
  4. NSArray* keys1=[NSArray arrayWithObjects:@"window_title",
  5. @"confirm_button",@"input_hint", nil];
  6. NSDictionary* dict4=[NSDictionary dictionaryWithObjects:values forKeys:keys1];
  7. NSLog(@"count:%lu",dict.count);
  8. //NSEnumerator能够使用for-each循环高速进行迭代
  9. NSEnumerator*keyEnums=[dict4 keyEnumerator];
  10. int i=0;
  11. for (NSString* key in keyEnums) {
  12. NSLog(@"key%d:%@",i++,key);
  13. }
  14. NSLog(@"window_title=%@",[dict4 objectForKey:@"window_title"]);
  15. NSLog(@"confirm_button=%@",[dict4 objectForKey:@"confirm_button"]);
  16. NSLog(@"input_hint=%@",[dict4 objectForKey:@"input_hint"]);

可变字典

  1. NSLog(@"*************************** 可变字典 *****************************");
  2. NSMutableDictionary *dict6 = [NSMutableDictionary dictionary];
  3. // 加入值健对
  4. [dict6 setObject:@"jack" forKey:@"name"];
  5. [dict6 setObject:@"BeiJing" forKey:@"address"];
  6. [dict6 setObject:@"1206293008" forKey:@"QQ"];
  7. [dict6 setObject:@"male" forKey:@"sex"];
  8. [dict6 setObject:@"programming" forKey:@"hobby"];
  9. NSLog(@"%@", dict6);
  10. // 移除值健对
  11. [dict6 removeObjectForKey:@"address"];
  12. //输出姓名
  13. NSString *str = dict6[@"name"];
  14. NSLog(@"%@", str);

字典遍历

  1. NSLog(@"************************** 字典遍历 ******************************");
  2. // 方式一:字典是无序的
  3. NSDictionary *dict7 = @{
  4. @"address" : @"北京",
  5. @"name" : @"jack",
  6. @"qq" : @"88888888"};
  7. NSArray *keys2 = [dict7 allKeys];
  8. for (int i = 0; i<dict7.count; i++)
  9. {
  10. NSString *key = keys2[i];
  11. NSString *object = dict7[key];
  12. NSLog(@"%@ ~~~~~~~ %@", key, object);
  13. }
  14. //方式二:block遍历
  15. [dict7 enumerateKeysAndObjectsUsingBlock:
  16. ^(id key, id obj, BOOL *stop) {
  17. NSLog(@"%@ ---- %@", key, obj);
  18. }];

字典需求排序

  1. NSLog(@"************************* 字典需求排序 ****************************");
  2. NSMutableDictionary* givenName=[NSMutableDictionary dictionaryWithObjectsAndKeys:
  3. [NSNumber numberWithInt:4],@"王", nil];
  4. [givenName setObject:[NSNumber numberWithInt:8] forKey:@"周"];
  5. [givenName setObject:[NSNumber numberWithInt:6] forKey:@"李"];
  6. [givenName setObject:[NSNumber numberWithInt:9] forKey:@"赵"];
  7. //keySortedByValueUsingSelector
  8. //由于value是NSNumber类型。全部能够使用compare:进行比較
  9. NSArray* keysOfName=[givenName keysSortedByValueUsingSelector:@selector(compare:)];
  10. for (NSString* key in keysOfName) {
  11. NSLog(@"key:%@",key);
  12. }
  13. //高速迭代(枚举)
  14. for (NSString * key in givenName) {
  15. NSNumber* value=[givenName valueForKey:key];
  16. NSLog(@"[%@]=%@",key,value);
  17. }
  18. }
  19. return 0;

Foundation框架 - NSDictionary类、NSMutableDictionary类的更多相关文章

  1. (转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

    昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类, ...

  2. OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类

    昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/4 ...

  3. Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver

    ========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.c ...

  4. (转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

    前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java ...

  5. (转载)OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

    在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray ...

  6. OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

    我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArr ...

  7. Foundation框架经常使用数据类型和NSAutoreleasePool自己主动释放池解析

    第一.NSAutoreleasePool自己主动释放池解析 1.自己主动释放池的物理实现 自己主动释放池用栈来实现.当你创建一个新的自己主动释放池是,会压栈到栈顶.接受autorelease消息的对象 ...

  8. OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

    1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于J ...

  9. Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)

    1.NSNumber 将基础数类型数据转成对象数据(比如int  float double BOOL  long等等) //通过NSNumber将基础数类型数据转成对象数据. NSNumber * i ...

随机推荐

  1. 使用GEANT4的模拟技术1

    简介 本文来源于意大利国家核物理研究院INFN的08年的slides.原文名称simulation techniques using geant4,原文主要讲述的是开发geant4用户程序的方法.这里 ...

  2. 【bzoj1087】【互不侵犯King】状压dp裸题(浅尝ACM-D)

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=54329606 向大(hei)佬(e)势力学(di ...

  3. HDU 4815 Little Tiger vs. Deep Monkey 2013 长春现场赛C题

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4815 [题意] n个题目,每题有各自的分数,A有50%的概率答对一道题目得到相应分数,B想要在至少P的概率 ...

  4. LINUX 下mysql导出数据、表结构

    1.首先要确认mysqldump命令所在路径 例如,我的在:/usr/bin/ 下 [root@sf105113 bin]# which mysqldump /usr/bin/mysqldump 2. ...

  5. python正则表达式-re模块

    目录: 一.正则函数 二.re模块调用 三.贪婪模式 四.分组 五.正则表达式修饰符 六.正则表达式模式 七.常见的正则表达式 导读: 想要使用python的正则表达式功能就需要调用re模块,re模块 ...

  6. java.util.List.subList ,开区间和闭区间

    比如集合中的内容为1,2,3,4,5list.sublist(2,4)就返回一个子集合:它的内容包括从下标为2到下标为4,而且这是左闭右开的就是说是从大于等于2到小于4那子集内容就是3,4(集合的下标 ...

  7. DOM系统学习-基础

    DOM介绍  DOM介绍: D 网页文档 O 对象,可以调用属性和方法 M 网页文档的树型结构  节点: DOM将树型结构理解为由节点组成.     节点种类: 元素节点.文本节点.属性节点等 查找元 ...

  8. SpringBoot 框架整合webservice

    spring boot集成web service框架 题记: 本篇博客讲的spring boot如何集成 spring web service,如果您想用Apache CXF集成,那么可能不适合您.为 ...

  9. 自动生成logo的网址

    1.https://www.logaster.com/logo/

  10. vsftp 服务配置

    在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftpd (very serure ftp) 搭建vsftpd 服务 yum 安装需要用两个包:vsftpd 和 db4-util ...