NSArray、NSSet、NSDictionary

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

字典创建

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
@autoreleasepool {
        NSLog(@"**************************  ******************************");

        //方式一:
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"]; //方式二:
NSArray *keys = @[@"name", @"address"];
NSArray *objects = @[@"jack", @"BeiJing"];
NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSLog(@"集合二结果为:%@",dict2); //方式三:值健对
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:
@"jack", @"name",
@"BeiJing", @"address",
@"88888888", @"qq", nil];
NSLog(@"集合三结果为:%@",dict3);

字典高速初始化

        NSLog(@"************************ 字典高速初始化 **************************");

        //健值对
NSDictionary *dict5 = @{@"name" : @"jack", @"address" : @"Beijing"};
id obj = dict5[@"name"];
NSLog(@"%@", obj); // 返回的是键值对的个数
NSLog(@"%ld", dict5.count);

字典创建实例

        NSLog(@"************************ 字典创建实例 ****************************");

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

可变字典

        NSLog(@"*************************** 可变字典 *****************************");

        NSMutableDictionary *dict6 = [NSMutableDictionary dictionary];
// 加入值健对
[dict6 setObject:@"jack" forKey:@"name"];
[dict6 setObject:@"BeiJing" forKey:@"address"];
[dict6 setObject:@"1206293008" forKey:@"QQ"];
[dict6 setObject:@"male" forKey:@"sex"];
[dict6 setObject:@"programming" forKey:@"hobby"];
NSLog(@"%@", dict6);
// 移除值健对
[dict6 removeObjectForKey:@"address"]; //输出姓名
NSString *str = dict6[@"name"];
NSLog(@"%@", str);

字典遍历

          NSLog(@"************************** 字典遍历 ******************************");

        // 方式一:字典是无序的
NSDictionary *dict7 = @{
@"address" : @"北京",
@"name" : @"jack",
@"qq" : @"88888888"}; NSArray *keys2 = [dict7 allKeys];
for (int i = 0; i<dict7.count; i++)
{
NSString *key = keys2[i];
NSString *object = dict7[key];
NSLog(@"%@ ~~~~~~~ %@", key, object);
} //方式二:block遍历
[dict7 enumerateKeysAndObjectsUsingBlock:
^(id key, id obj, BOOL *stop) {
NSLog(@"%@ ---- %@", key, obj); }];

字典需求排序

        NSLog(@"************************* 字典需求排序 ****************************");

        NSMutableDictionary* givenName=[NSMutableDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:4],@"王", nil];
[givenName setObject:[NSNumber numberWithInt:8] forKey:@"周"];
[givenName setObject:[NSNumber numberWithInt:6] forKey:@"李"];
[givenName setObject:[NSNumber numberWithInt:9] forKey:@"赵"]; //keySortedByValueUsingSelector
//由于value是NSNumber类型。全部能够使用compare:进行比較
NSArray* keysOfName=[givenName keysSortedByValueUsingSelector:@selector(compare:)];
for (NSString* key in keysOfName) {
NSLog(@"key:%@",key);
}
//高速迭代(枚举)
for (NSString * key in givenName) {
NSNumber* value=[givenName valueForKey:key];
NSLog(@"[%@]=%@",key,value);
} }
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. EditText中输入信息的限制的方法

    应用场景 在Android应用中有时需要EditText中只允许输入约定的一些字符,禁止输入其他字符.这里列举了一些可能的应用场景. 1. 场景一 在通讯录保存好友信息界面中填写好友的电话号码时,应当 ...

  2. 利用【深度网络】高效提取feature

    extracting features from a learned model, and add some new features yourself.

  3. RESTful接口签名认证实现机制

    RESTful接口 互联网发展至今,催生出了很多丰富多彩的应用,极大地调动了人们对这些应用的使用热情.但同时也为互联网应用带来了严峻的考验.具体体现在以下几个方面: 1.     部署方式的改变:当用 ...

  4. DevExpress控件之LayoutControl

    一.项目运行中不显示右键菜单 layoutControl1.AllowCustomization = false 二.控件超出容器后不显示滚动条 layoutControl1.AtuoScroll = ...

  5. Android Scroll具体解释(二):OverScroller实战

    作者: ztelur 联系方式:segmentfault,csdn.github 本文仅供个人学习,不用于不论什么形式商业目的,转载请注明原作者.文章来源.链接,版权归原文作者全部.  本文是andr ...

  6. http接口测试—自动化测试框架设计

    转载:https://my.oschina.net/hellotest/blog/499719 一.测试需求描述 对服务后台一系列的http接口功能测试. 输入:根据接口描述构造不同的参数输入值(Js ...

  7. 微信公众号 - js传入时间戳换算(以前几天、几小时...)

    // 获取当前时间戳 function timestamps() { return Math.round(new Date().getTime() / 1000).toString() } // 距离 ...

  8. 怎么运行Typescript

    依据官方示例: npm i -g typescript 示例:tsc *.ts 实例:tsc hello.ts 不过以上实现的太有限制了,如下实现可满足正常测试以及学习使用 package,json ...

  9. badblocks检测磁盘坏道

    1.检测整个盘如/dev/sdb #badblocks -v /dev/sdb > badsectors.txt 2.检测一个分区#badblocks -v /dev/sdb1 > bad ...

  10. SQLite使用事务

    关键代码 SQLiteDatabase db = myDataHelper.getWritableDatabase(); // 开启事务 db.beginTransaction(); try{ db. ...