今天老师带我们又加深了对字典的认识 那我们就继续复习一下字典:
NSDictionary:字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。可使用dictionaryWithObjectsAndKeys来创建字典查询字典的值:objectForKeyNSMutableDictionary的dictionary方法可以创建一个可变字典,也可以使用dictionaryWithCapaticy:。使用 setObject:forkey: 方法添加字典元素,如果关键字已存在,则用新植替换旧值。类似的,NSMutableDictionary类允许随意添加或删除字典元素。
添加元素:setObject:forkey:
删除元素:removeObjectForKey:
[cpp] view plain
copy
?
- 1 //
- 2 //
- 3 //
- 4 //
- 5 //
- 6 //
- 7 //
- 8
- 9 #import
- 10
- 11
- 12 @interface MyClass : NSObject
- 13 {
- 14 NSString *firstName;
- 15 NSString *lastName;
- 16 }
- 17
- 18
- 19 - (void
) setFirstName:(NSString *)m_firstName;
- 20 - (NSString *) firstName;
- 21
- 22 - (void
) setLastName: (NSString *) m_lastName;
- 23 - (NSString *) lastName;
- 24
- 25
- 26 @end
[cpp]
view plaincopyprint?
- 9 #import
"MyClass.h"
- 10
- 11
- 12 @implementation MyClass
- 13
- 14 - (void
) setFirstName:(NSString *)m_firstName{
- 15
- 16 firstName = m_firstName;
- 17 }
- 18 - (NSString *) firstName{
- 19 return
firstName;
- 20 }
- 21
- 22 - (void
) setLastName: (NSString *) m_lastName{
- 23 lastName = m_lastName;
- 24 }
- 25 - (NSString *) lastName{
- 26 return
lastName;
- 27 }
- 28
- 29
- 30 - (NSString *) description
- 31 {
- 32 if
(firstName == nil || lastName == nil) {
- 33 return
@
"No Name found."
;
- 34 } else
{
- 35 return
[NSString stringWithFormat:@
"%@ %@"
,
- 36 firstName,lastName];
- 37 }
- 38
- 39 }
- 40
- 41 @end
[cpp]
view plaincopyprint?
- 7 #import
- 8 #import "MyClass.h"
- 9
- 10 int
main (
int
argc,
const
char
* argv[]) {
- 11 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- 12
- 13 // 创建字典:dictionaryWithObjectsAndKeys:
- 14 MyClass *my1 = [MyClass new
];
- 15 MyClass *my2 = [MyClass new
];
- 16 MyClass *my3 = [MyClass new
];
- 17 MyClass *my4 = [MyClass new
];
- 18
- 19 NSDictionary *myClassDict;
- 20 myClassDict = [NSDictionary dictionaryWithObjectsAndKeys:
- 21 my1, @"my1"
,
- 22 my2, @"my2"
,
- 23 my3, @"my3"
,
- 24 my4, @"my4"
, nil];
- 25 // 获取值 objectForKey
- 26 MyClass *sub = [myClassDict objectForKey: @"my3"
];
- 27 if
(sub == nil) {
- 28 exit(1);
- 29 }
- 30 [sub setFirstName:@"Elf"
];
- 31 [sub setLastName:@"Sundae"
];
- 32
- 33 NSLog(@"修改数据: %@"
,sub);
- 34
- 35 // 遍历字典
- 36 NSLog(@"***遍历字典myClassDict如下:"
);
- 37 for
(id key in myClassDict)
- 38 {
- 39 NSLog(@"key: %@ ,value: %@"
,key,[myClassDict objectForKey:key]);
- 40 }
- 41 NSLog(@"***遍历字典myClassDict结束。"
);
- 42
- 43 // MARK: *** 添加新元素 ***
- 44 // NSDictionary无法添加或删除元素,可以使用NSMutableDictionary.
- 45 NSMutableDictionary *myNewDict = [NSMutableDictionary dictionary];
- 46 // 将原有字典添加到新字典的一对元素
- 47 //[myNewDict setObject:myClassDic forKey:@"旧的不可变字典myClassDic"];
- 48
- 49 // 遍历添加已有数据(原字典)
- 50 for
(id key in myClassDict)
- 51 {
- 52 [myNewDict setObject: [myClassDict objectForKey:key]
- 53 forKey:key];
- 54 }
- 55
- 56 NSString *newkey = @"newKey"
;
- 57 NSString *newValue = @"This is a new Value."
;
- 58 [myNewDict setObject:newValue forKey:newkey];
- 59
- 60 // 遍历myNewDict
- 61 NSLog(@"***遍历字典myNewDict如下:"
);
- 62 for
(id key in myNewDict)
- 63 {
- 64 NSLog(@"key: %@ ,value: %@"
,key,[myNewDict objectForKey:key]);
- 65 }
- 66 NSLog(@"***遍历字典myNewDict结束。"
);
- 67
- 68 // 删除元素
- 69 [myNewDict removeObjectForKey: @"newKey"
];
- 70
- 71 // 遍历myNewDict
- 72 NSLog(@"***遍历字典myNewDict如下:"
);
- 73 for
(id key in myNewDict)
- 74 {
- 75 NSLog(@"key: %@ ,value: %@"
,key,[myNewDict objectForKey:key]);
- 76 }
- 77 NSLog(@"***遍历字典myNewDict结束。"
);
- 78
- 79 [pool drain];
- 80 return
0;
- 81 }
DEMO下载
// 输出结果(省略日期 时间等信息)
修改数据: Elf Sundae
***遍历字典myClassDict如下:
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
***遍历字典myClassDict结束。
***遍历字典myNewDict如下:
key: newKey ,value: This is a new Value.
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
***遍历字典myNewDict结束。
***遍历字典myNewDict如下:
key: my3 ,value: Elf Sundae
key: my4 ,value: No Name found.
key: my1 ,value: No Name found.
key: my2 ,value: No Name found.
***遍历字典myNewDict结束。
将一个BOOL值插入到NSMutableDictionary中
- 项目要讲BOOL类型的值插入到一个NSMutableDictionary。
- 首先将 BOOL 包装到 NSNumber中:
- NSNumber
*boolNumber = [NSNumber numberWithBool:YES]
- 取得BOOL值:
- BOOL b
= [boolNumber boolValue];
- 或者通过这种方式:
- NSValue
*boolValue = [NSValue value:pointerToBool withObjCType:@encode(BOOL*)];
- BOOL
*b = [boolValue pointerValue];
学习ios 重要还是要理清楚思路 在做或者看老师代码的时候 自己多想想为什么 不要自己看着就抄 另外还是要推荐一下 蓝懿IOS这个培训机构 和刘国斌老师刘国斌老师还是很有名气的,听朋友说刘老师成立了蓝懿iOS,,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学习氛围非常好,每天都学到9点多才离开教室,练习的时间很充裕,而且如果在练习的过程中有什么困难,随时可以向老师求助,不像其它机构,通过视频教学,有的甚至学完之后都看不到讲师本人,问点问题都不方便,这就是蓝懿与其它机构的区别,相信在刘国斌老师的细心指导下,每个蓝懿学员都能找到满意的工作,加油!
写博客第三十三天;
QQ:565803433