OC第五课
来源:互联网 发布:网络语吃饼什么意思 编辑:程序博客网 时间:2024/06/04 18:47
主要内容:字典、集合、数组排序
一、字典
示例:
name : @" 张三 " ;sex:@" 男 " ; age :@" 21 " ;
思考:怎么用字典保存?
字典:用于保存具有映射关系(key - value对)数据的集合,对于张三来说,key就是name,男来说,sex就是key
一个key - value对认为是一个条目,字典是存储key - value对的容器
与数组不同,字典靠key存取元素,key不能重复,value必须是对象(value可以重复),键值对在字典中的存储是无序的
字典同样分为可变字典(NSMutableDictionary)、不可变字典(NSDictionary)
不可变字典(NSDictionary):
不可变字典一旦创建,键值对就不可更改、不可添加、不可删除,只能读取key或者value
创建字典对象(三种方法):
便利构造器:NSDictionary *dict1 = [ [ NSDictionary dictionaryWithObjects : @[@"af", @"afaf", @"adada"] forkeys : @[ @"first", @"second" , @"three"] ] ;
初始化方法:NSDictionary *dict2 = [ [ NSDictionary alloc] initWithObjectsAndKeys : @"first" , @"afdaf" ,
@"second" , @"afadx" ] ;
字面量:NSDictionary *dict3 = @{@"first" : @"aex",
@"second" : @"af", } ;
常用方法:
1、获取所有的key值
[ dict1 allKeys ] ;
2、获取所有的value值
[ dict1 allValues ] ;
3、通过key值查询value
[ dict1 ObjectForKey : @"first" ] ;
可变字典(NSMutableDictionary):
不可变字典(NSDictionary)的子类
可以进行增删改查的操作
常用方法:
1、添加键值对
[ dict2 addEntriesFromDictionary : @{@"other" : @"afa" } ] ; / / 作用是将一个字典中的键值对放入另一个字典中
[ dict2 setObject : @"other" forKey : @"axea" ] ;
2、修改key对应的值
[ dict2 setObject : @"afas" forKey : @"first" ] ;
3、删除键值对
[ dict2 removeObjectForKey : @"first" ] ;
[ dict2 removeAllObject ] ; / / 删除全部键值对
4、通过for循环遍历所有的键值对
for ( NSDictionary *obj int dict3 ) { / / 快速遍历方法
NSLog ( @" %@ " , obj) ; / / 快速遍历对字典来说,默认打印key值
}
二、集合
与数学中的集合一样,集合中的元素 “ 唯一 ”
元素是无序的,并且元素必须是对象,同样分为NSSet(不可变集合)、NSMutableSet(可变集合)
如果想从集合中取出元素,只能随机取出一个
NSSet(不可变集合):
创建集合:NSSet *sets = [ NSSet setWithObjects : @"b" , @"c" , @"a", @"d", nil ] ;
常用方法:
1、获取元素个数 count
[ sets count ] ;
2、获取集合中的一个元素 anyObject
[ sets anyObject ] ;
3、判断集合中是否包含某个元素 containObject
[ sets containsObject ] ;
三、集合类型的快速枚举
for ( <#type *object#> in <#collection#>){
}
object是遍历得到的元素对象
collection是集合类型的对象:数组、字典、集合
特点:
数组枚举得到数组中的元素对象、
字典枚举得到字典中的key值、
集合枚举得到集合中的元素对象
四、数组排序
原来学的冒泡排序
示例:
int array[10] = { 2, 5, 4, 7, 6, 3} ;
for (int i = 0; i < 6 - 1 ; i++){
for(int j = 0; j < 6 - 1 - i ; j++){
int temp = array[ j ] ;
array[ j ] = array[ j + 1 ] ;
array[ j + 1 ] = temp ;
}
}
for(int i = 0 ; i < 6 ; i++){
printf("%d" , a[ i ]) ;
}
数组排序:
for (int i = 0; i < 6 - 1 ; i++){
for( 判断条件 ){
[array exchangeObjectAtIndex : j WithObjectAtIndex : j + 1 ] ;
}
}
- OC第五课
- OC----第五讲
- OC 第五讲 字符串
- OC第五讲
- OC第五课(@class与#import)property参数使用
- OC语言第五课 Foundation框架二——iOS学习连载十
- OC基础第五章:构造方法
- OC - 第五章 集合 ( 数组、字典、集合 )
- 第五课
- 第五课
- 第五课
- 黑马程序员---第五篇 OC三大特性
- OC第五讲(NSNumber,NSArray,NSDictionary,NSSet等)
- OC第一课
- OC第二课
- OC第三课
- OC第一课
- OC第二课
- 拥抱开源,如何关注Linux Kernel 邮件列表?
- 解决XCode6在IOS7系统上出现部分黑屏与不适配问题
- 11088 整数划分的扩展问题(递归,分治)
- poj 1904 King's Quest 强连通分量
- Exists 和 Not Exists 备忘
- OC第五课
- 李彦宏:百度用两年完成移动转型
- OUI-10022:The target area /oracle/oraInventory cannot be used because it is in an invalid state.
- BZOJ 1305 CQOI2009 dance跳舞 二分答案+最大流
- 马云:说淘宝假货多的人基本没在上面买过东西
- 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法
- phpstorm快捷键
- String Reduction
- 加强版Cheat Engine之Samuel Engine