黑马程序员--OC基础--NSDictionary用法

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

 1 #import <Foundation/Foundation.h>
 2
 3
 4 /*
 5  字典:
 6  key-->value
 7  索引-->文字内容
 8
 9  里面存储的东西都是键值对
10
11
12  */
13
14 int main() {
15     //不可变,初始化需完成赋值
16     NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
17
18     id obj = [dict objectForKey:@"name"];
19
20     NSLog(@"%@", obj);
21
22
23     NSArray *keys = @[@"name",@"address"];
24     NSArray *objects = @[@"jack", @"北京"];
25
26     NSDictionary *dict2 = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
27     id obj1 = [dict2 objectForKey:@"name"];
28
29     NSLog(@"%@", obj1);
30
31
32     NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"jack", @"name",
33                            @"北京", @"address",
34                            @"34234234", @"qq", nil];
35
36     id obj2 = [dict3 objectForKey:@"qq"];
37
38     NSLog(@"%@", obj2);
39
40
41     //建议使用
42     NSDictionary *dict4 = @{@"name" : @"jack",
43                             @"address" : @"北京",
44                             @"qq" : @"4234234"};
45
46     //id obj3 = [dict4 objectForKey:@"address"];
47
48     //建议使用
49     id obj3 = dict4[@"address"];
50
51     NSLog(@"%@", obj3);
52
53     //返回键值对的个数
54     NSLog(@"%ld", dict4.count);
55
56
57
58
59     //可变字典
60     NSMutableDictionary *dict5 = [NSMutableDictionary dictionary];
61     //添加键值对,无序
62     [dict5 setObject:@"jack" forKey:@"name"];
63     [dict5 setObject:@"北京" forKey:@"address"];
64
65     //重复给key赋值会覆盖以前的值,字典不允许相同的key,允许有相同的object
66     [dict5 setObject:@"rose" forKey:@"name"];
67
68     //删除键值对
69     //[dict5 removeObjectForKey:@"name"];
70
71
72     //遍历
73     NSDictionary *dict6 = @{@"name" : @"tom",
74                             @"address" : @"北京",
75                             @"tel" : @"3423424"};
76 //    NSArray *Keys = [dict6 allKeys];
77 //
78 //    for (int i = 0; i<dict6.count; i++) {
79 //
80 //        NSString *key = Keys[i];
81 //        NSString *object = dict6[key];
82 //        NSLog(@"%@=%@", key, object);
83 //    }
84
85     //block遍历
86     [dict6 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
87         NSLog(@"%@-%@", key, obj );
88
89         *stop = YES;
90
91         }];
92
93       return 0;
94 }
时间: 2025-01-18 07:16:39

黑马程序员--OC基础--NSDictionary用法的相关文章

黑马程序员--oc基础第八篇

八. oc基础知识(Protocal) protocal 出发点:他仅仅是用来声明方法的. 1. 可以用来声明一大堆方法(但是不能声明成员变量) 2. 只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明 3. 只要父类遵守了某个协议,就相当于子类也遵守了 4. 协议列出了一组方法,有些是必须实现的,有些是选择实现(@optional).遵守协议就要实现协议里面所有必须实现的方法.         1. 定义一个协议 协议格式的编写 @protocol协议名称//为协议起一个有意义的名

黑马程序员--oc基础第六篇

六. oc基础知识(内存管理下) 总结:内存管理代码规范 1.只要调用alloc那么就必须调用release: 2.set方法的代码部分 *基本数据类型直接赋值. *如果是oc对象类型 - (void) setCar:(Car *)car { if(_car!=car) { [_car release]; _car=[Car retain]; } } 3.dealloc 部分的代码规范 *一定要[super dealloc ]放在最后面. *对self(当前)所拥有的其他对象做一次release

黑马程序员---OC基础8【block类型】【Protocol】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [block类型] 1.block概念 block对象是一个C级别的语法和运行机制,不同之处,它除了有可执行代码以外,它还包含了与堆栈内存绑定的变量 方法的回调 block是一个类型,定义变量,用来存储代码块 2.block基本用法 block与函数很相似,有返回值类型,参数类型,主体: 返回值类型 (^block变量名)(形参列表) = ^(形参列表) { }; 没有参数可以写void,比如:i

黑马程序员--oc基础第十篇(foundation框架下、集合)

十 . oc基础(Foundation框架下) 1.下面介绍几种OC对象类型的存储结构:NSArray,NSDictionary,NSSet,以及基本数据类型封装类. NSNumber:*既然这几种数据结构都是用来存放对象类型的那么基本数据类型想要放入其中就要先对他们进行封装.使用NSNumber对基本数据类型进行封装. // // Created by keeganlee on 15/3/2. // Copyright (c) 2015年 keeganlee. All rights reser

黑马程序员---OC基础9【Foundation框架】【NSString介绍】【NSURL读写字符串】【NSString字符串比较】【NSString前后缀检查及搜索】【NSRange使用】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [Foundation框架] 1.Foundation框架介绍 1)Foundation框架概念 框架是由许多类.方法.函数.文档按照一定的逻辑组织起来的集合 以便使研发程序变得 更容易在OS X下的Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation 框架 2)Foundation框架的作用 Foundation框架是Mac\iOS中其他框架的基础 Foundat

黑马程序员--oc基础第九篇(Foundation框架上)

九 . oc基础(Foundation框架上) 1.四中结构体类型:NSRange,NSPoint,NSSize,NSRect 1>NSRange:是一个以为的结构由成员location和成员length共同组成. *NSRange的创建方式:NSRange range=NSMakeRange(2.4),代表范围是从2开始一直到5,location为2,length为4 *NSString *[email protected]“I love you”:NSRange range=[str ran

黑马程序员---OC基础7【ARC概念】【ARC对象内存管理】【分类Category】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [ARC概念]   1.指针的分类 1)强指针,默认的情况下,所有的指针都是强指针,关键字strong: 2)弱指针,_ _weak关键字修饰符的指针 2.ARC概念 自动引用计数 永远不要写retain和release.autorelease三个关键字 编译器会在编译的时候自动插入retain和release.autorelease, 是一个编译器的特性:“垃圾回收”是运行时的特性 3.ARC工

黑马程序员--oc基础第五篇

五.oc的语法基础(内存管理上) 1.引用计数器:在每一个对象里都有一个引用计数器,占用4个字节的空间,在一个对象创建时引用计数器的值初始化为1. *给对象发送一条retain消息,可以使引用计数器的值+1(retain方法返回对象本身) *给对象发一条release消息,则计数器的值-1 *可以给对象发送retaincount消息来获取当前引用计数器的值 *当一个对象被销毁时,系统会自动向对象发送一条dealloc消息,就像遗言一样,可以对他进行改写,一但改写就必须调用[super deall

黑马程序员---OC基础5【点语法】【@property关键字】【@synthesize关键字】【id类型】【动态类型】【构造方法】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [点语法] 1 1.使用“点语法” 2 Student *stu= [[Student alloc]init]; 3         //调用set方法 4         [stu setAge:20]; 5         [stu setName:@"Jone"]; 6         //点语法:xcode的特性,Xcode帮我们做了代码替换 7         //点语法,

黑马程序员---OC基础6【内存管理】【手动内存管理】【单、多个对象的内存管理】【*@property参数】【@class的使用】【NSString类的内存管理】【autorelease使用】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [内存管理] 1.内存管理概念 由于移动设备内存及其有限,所以每个app所占的内存也是有限的 需要回收一些不使用的空间 2.OC内存管理的范围 管理任何继承NSOject的对象,对其他的基本数据类型无效 主要管理堆区中的对象的内存管理   3.内存管理的原理 1)对象所有权概念 任何对象都可以能拥有一个或多个所有者,只要一个对象至少还拥有一个所有者,他就会继续存在 cocoasu所有权策略 任何自