Foundation框架 - NSDictionary类、NSMutableDictionary类
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类的更多相关文章
- (转载)OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类
昨天学习了Foundation框架中NSArray类和NSMutableArray类,今天来看一下Foundation框架中的NSDirctionary类,NSMutableDirctionary类, ...
- OC学习篇之---Foundation框架中的NSDirctionary类以及NSMutableDirctionary类
昨天学习了Foundation框架中NSArray类和NSMutableArray类:http://blog.csdn.net/jiangwei0910410003/article/details/4 ...
- Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver
========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.c ...
- (转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java ...
- (转载)OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类
在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类,今天我们继续来看一下Foundation框架中的NSArray类和NSMutableArray ...
- OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类
我们继续来看一下Foundation框架中的NSArray类和NSMutableArray类,其实NSArray类和Java中的List差不多,算是一种数据结构,当然我们从这两个类可以看到,NSArr ...
- Foundation框架经常使用数据类型和NSAutoreleasePool自己主动释放池解析
第一.NSAutoreleasePool自己主动释放池解析 1.自己主动释放池的物理实现 自己主动释放池用栈来实现.当你创建一个新的自己主动释放池是,会压栈到栈顶.接受autorelease消息的对象 ...
- OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)
1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于J ...
- Foundation框架下的常用类(NSNumber, NSValue, NSDate,NSDateFormatter)
1.NSNumber 将基础数类型数据转成对象数据(比如int float double BOOL long等等) //通过NSNumber将基础数类型数据转成对象数据. NSNumber * i ...
随机推荐
- Context3D的setProgramConstantsFromMatrix使用时需注意的事项
setProgramConstantsFromMatrix() public function setProgramConstantsFromMatrix(programType:String, fi ...
- [NOIP模拟赛][并没有用二分][乱搞AC]
圆圈舞蹈 [问题描述] 熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞.由于没有严格的教育,奶牛们之间的间隔不一致. 奶牛想知道两只最远的奶牛到底隔了多远.奶牛A到B的距离为A顺时针走和逆时针走,到达 ...
- RMQ ---- ST(Sparse Table)算法
[概述] RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返 ...
- linux-系统资源查看-静态
查看系统版本:lsb_release -a 查看cpu:lscpu 查看内存:free -m (free -g 单位是GB) 查看硬盘空间情况df -h
- 体验VisualStudio 2013中的内存分析功能
内存分析一直是个比较令人头痛的问题,Visual Studio 2013中就集成了一个内存分析的功能,可以方便我们进行分析内存的占用情况.本文将简单的介绍一下如何使用这个功能. 首先以一个简单的程序为 ...
- SQL Server 2008 R2 SP3 and SQL Server 2008 SP4 are now available!
时间 2014-10-02 00:00:00 SQL Server Team Blog 原文 http://blogs.technet.com/b/dataplatforminsider/arc ...
- android intent 跳转
转自:http://blog.sina.com.cn/s/blog_7309444701014u2d.html 一.不需要返回值的跳转 Intent intent=new Intent(); inte ...
- UVa 407
此问题与求上升序列最大和类似,可以作为DAG模型计算.将每一快砖分解为3块,将所有砖块按照底排序,注意sort排序中涉及到底的两个参数x,y,这时候一定要有优先排,比如先排x再排y,不能同时排x和y, ...
- PSR规范,链接转载
https://www.kancloud.cn/thinkphp/php-fig-psr
- java的Commons包简介
http://mxdxm.iteye.com/blog/758453 Jakarta Commons是Jakarta的一个子项目,目的是创建和维护独立于其他框架和产品的程序包(packages).Ja ...