蓝懿ios 技术内容交流和学习心得 11.12

   今天老师带我们又加深了对字典的认识  那我们就继续复习一下字典:


NSDictionary:字典就是关键字及其定义(描述)的集合。Cocoa中的实现字典的集合NSDictionary在给定的关键字(通常是一个NSString)下存储一个数值(可以是任何类型的对象)。然后你就可以用这个关键字来查找相应的数值。不同于数组,字典(也被称为散列表或关联数组)使用的是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。可使用dictionaryWithObjectsAndKeys来创建字典查询字典的值:objectForKeyNSMutableDictionary的dictionary方法可以创建一个可变字典,也可以使用dictionaryWithCapaticy:。使用 setObject:forkey: 方法添加字典元素,如果关键字已存在,则用新植替换旧值。类似的,NSMutableDictionary类允许随意添加或删除字典元素。

添加元素:setObject:forkey:

删除元素:removeObjectForKey:

[cpp] view plain

copy

print

?

  1.  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?

  1.  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?

  1.  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中

  1. 项目要讲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​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值