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. 如何隐藏 video 元素的下载按钮

    1. 使用 video 元素的 ControlList API <video controls controlsList="nodownload"></video ...

  2. linux-网络监控命令-netstat进阶

    2.网络连接状态详解共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的.1).LISTEN:首先服务端需要打开一个socket进行监听,状态为LIST ...

  3. WPF--TextBox的验证

    WPF--TextBox的验证  

  4. 三种Web前端框架比较与介绍--Vue, react, angular

    一.Angular 1.MVVM(Model)(View)(View-model): 2.模块化(Module)控制器(Contoller)依赖注入: 3.双向数据绑定:界面的操作能实时反映到数据,数 ...

  5. SQL的连接(外连接、内连接、交叉连接和自连接)

    在查询多个表时,我们经常会用到连接查询,连接是关系型数据库的主要特点,也是它区别于其他类型的数据库管理系统的一个标志. 一.什么是连接查询 连接查询:根据两个表或者多个表的列之间的关系,来从这些表中查 ...

  6. 【spring Boot】2.在Myecplise上把spring Boot项目打包 war包和jar包

    ========================================================第一部分======================================== ...

  7. easyUI样式之easyui-switchbutton

    HTML文件 <tr> <th>是否发送短信:</th> <td> <input id="sendTxt" name=&quo ...

  8. 设计模式之工厂模式之简单工厂(php实现)

    github源码地址: git@github.com:ZQCard/design_pattern.git 1.简单工厂模式 特点:将调用者与创建者分离,调用者直接向工厂请求,减少代码的耦合.提高系统的 ...

  9. 遍历Enumeration

    版权声明:http://blog.csdn.net/qq924862077/ Enumeration(枚举)接口的作用和Iterator类似,只提供了遍历Vector和HashTable类型集合元素的 ...

  10. zabbix通过percona插件监控mysql

    percona zabbix mysql-plugin是percona发布的一个使用zabbix监控mysql数据库的工具,这款工具比zabbix自带的监控模板要强大的多,毕竟percona是Mysq ...