黑马程序员----OC语法之简明扼要的总结二
来源:互联网 发布:2008年nba总决赛数据 编辑:程序博客网 时间:2024/06/05 06:49
--------------培训 学习型 博客,请多指教-----------------------------
知识点
注意事项
容器简介
容器类,管理一组对象类型的数据.
iOS中存放数据的容器类都称为集合
数组简介
OC中数组是有序集合,只能存放对象类型;
数组有下标(index)的概念,靠下标查找元素,下标从0开始;
数组分不可变数组(NSArray)和可变数组(NSMutableArray).
不可变数组
数组的创建;
获取数组元素个数;
根据index获取数组中对象;
不可变数组(NSArray)的创建
常用实例方法:—initWithObjects:
常用便利构造器:+arrayWithObjects:
获取元素个数,根据index获取对象
获取元素个数:—count
根据index获取对象:—objectAtIndex:
可变数组(NSMutableArray)
NSMutableArray是NSArray的子类,继承了NSArray的所有方法
可变数组可以在数组本身基础进行增,删,改,查等操作.
常用方法:
创建数组对象;
添加元素,插入元素;
删除元素,替换元素;
交换指位置的两个元素;
(可变数组)NSMutableArray的创建
实例方法:
- initWithCapacity:
- initWithObjects:
便利构造器:
+ arrayWithCapacity:
+ arrayWithObjects:
添加元素,插入元素
添加元素:
- addObject:
插入元素:
- insertObject:atIndex:
删除元素,替换元素
删除元素:
- removeObjectAtIndex:
- removeLastObject:
- removeAllObjects:
替换元素:
- replaceObjectAtIndex:withObject:
交换指定位置的两个元素
- exchangeObjectAtIndex:withObjectAtIndex:
数组的遍历
数组的遍历:将数组从头到尾全部筛选一遍;
通常结合for循环使用,有多少元素就循环多少次;
快速遍历for—in
字典简介
对于”name:小三”来讲,key就是”name”,key对应的value是”小三”;
字典用于保存具有映射关系(key-value对)数据的集合;
一个key-value对认为是一个条目(Entry),字典是存储key-value对的容器
字典特点
与数组不同,字典靠key存取元素;
key不能重复,value必须是对象;
键值对在字典中是无序存储的;
字典分:不可变字典(NSDictionary)和可变字典(NSMutableDictionary)
不可变字典(NSDictionary)
不可变字典一旦创建,键值对就不可更改,不可添加,不可删除.
不可变字典仅能被读取key或者value
常用方法:
创建字典对象
获取所有key值,获取所有value值
通过key值查询value
不可变字典(NSDictionary)的创建
实例方法:
initWithObjectsAndKeys:
便利构造器:
+ dictionaryWithObjectsAnd
获取所有的key和value,通过key查询value
获取所有key:
allKeys
获取所有value:
allValue
通过key查询value:
- objectForKey
可变字典(NSMutableDictionary)
NSDictionary的子类
可以对可变字典的键值对进行增,删,改
常用方法:
创建可变字典对象
添加键值对
修改key对应的value
删除键值对
可变字典(NSMutableDictionary)的创建
实例方法:
- initWithObjectsAndKeys:
initWithCapacity:
便利构造器:
+ dictionaryWithObjectAndK
添加,修改,删除键值对
添加,修改键值对:
setValue:ForKey:
setObject:ForKey:
删除键值对:
-removeObjectForKey:
字典的遍历
遍历allKeys
遍历allValues
遍历所有的键值对
集合
数学中有集合的的概念
比如:整数集,自然数集.
再比如:集合{1,2,3,4},集合{2,3,5,6}
iOS中也有集合类与数学中的集合对应
集合的特点
与数学中的集合一样,集合中的元素唯一
存储的元素是无序的
存储元素必须是对象类型
iOS中用Set表示集合,分NSSet和NSMutableSet
不可变集合(NSSet)
常用方法:
创建集合对象
获取元素个数
获取集合中的某个元素
判断集合中是否包含某个对象
不可变集合(NSSet)的创建
实例化方法:
initWithObjects:
便利构造器:
+ setWithObjects:
获取不可变集合(NSSet)的元素个数及某个元素
获取元素个数:
count
获取某个元素:
- anyObject
判断集合是否包含某个元素
- containsObject:
可变集合(NSMutableSet)
常用方法:
创建集合对象
添加元素
删除元素
可变集合(NSMutableSet)的创建
实例化方法:
initWithObjects:
便利构造器:
- setWithObjects:
可变集合(NSMutableSet)元素的添加,删除
添加元素:
addObject:
删除元素:
- removeObject:
计数集合特点
NSCountedSet是NSMutableSet的子类
能记录元素的重复次数
在set的基础上添加了计数功能
- countForObject:
知识点
注意事项
数组的遍历
NSArray *array = @[@“西游记”,@“三国演义”,@“红楼梦”,@“水浒传”];
方法一:for循环
for(int i = 0;i < array.count ;i ++){NSLog(@“%@”,array[i]);}
方法二:枚举器
NSEnumerator *enumerator = [array objectEnumerator];
NSString *object = nil;
while(object = [enumerator nextObject]){NSLog(@“%@”,object);}
方法三:快速枚举(for in)
for(NSString *object
字典的遍历
NSDictionary *dictionary = @{@“name”:@“张三”,@“sex”:@“男”,@“age”:@“20”}
方法一:for循环
NSArray *array01 = [dictionary allKeys];
for(int i = 0;i < array.count;i++){NSLog(@“%@—%@”,array[i],dictionary[array[i]]);}
方法二:枚举器
NSEnumerator *keyEnumerator = [dictionary keyEnumerator];
NSString *key = nil;
while(key = [keyEnumerator nextObject]){NSLog(@“%@—%@”,key,dictionary[key]);}
方法三:快速枚举(for in)
for(NSString *key
集合的遍历
NSSet *set = [NSSet setWithObjects:@“zhao”,@“qian”,@“sun”,@“li”,nil];
方法一:for 循环
NSArray *array = [set allObjects];
for(int i = 0; i< array.count;i++){NSLog(@“%@”,array[i]);}
方法二:使用枚举器
NSEnumerator *enumerator =[set objectEnumerator];
NSString *object = nil;
while(object = [enumerator nextObject]){NSLog(@“%@”,object);}
方法三:快速遍历(for in)
for (NSString *object
for in
1.是 oc 的快速枚举语法,内部封装了枚举器。
2.数组 for in枚举的是数组元素
3.字典 for in枚举的是字典中的 key,因为 key 是唯一的
4.集合 for in 枚举的是集合中的元素;
5.如果用 for in 来枚举一个可变容器,不能在枚举期间对容器做任何修改,即:不能添加,删除等。如果需要在枚举期间做修改,请使用普通for 循环,而不要用 for in
不可变数组排序方法
排序方法:NSArray *array02 = [array01 sortedArrayUsingSelector
构建排序描述器:NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@“name”ascending:YES];
可变数组排序方法
排序方法:NSArray *array02 = [array01 sortUsingSelector:@selector(compareByNameAscending:)];
构建排序描述器:NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@“name”ascending:YES];
SEL
是你数组元素
小结
1.官方推荐的排序方法:使用 NSSortDescriptor(描述器排序)进行排序。这种方式可以实现复杂排序,可以设置n个排序条件,下标0放第一排序条件,下标1放第二排序条件,以此类推。。。
2.不可变数组也可以排序,只不过自身不会发生变化,会创建一个新的数组,存放排好序的元素,并把这个数组返回。
3.可变数组可以对自身排序
4.可变数组排序方法没有返回值。方法名第一个单词,是个动词。
- 黑马程序员----OC语法之简明扼要的总结二
- 黑马程序员----OC语法之简明扼要的总结一
- OC语法之简明扼要的总结一
- 黑马程序员--08 OC 核心语法
- 黑马程序员-OC语言之封装
- 黑马程序员-OC语言之继承
- 黑马程序员-OC语言核心语法(1)
- 黑马程序员:OC学习日记之核心语法二
- 黑马程序员-oc-Block
- OC总结-block语法
- 黑马程序员---OC面向对象总结
- 黑马程序员---OC特有语法(二)
- 黑马程序员-OC基本语法总结
- 黑马程序员------OC基础-----基础语法总结
- 黑马程序员-OC回顾-语法总结
- 黑马程序员-IOS基础之OC语法
- 黑马程序员---OC中类与对象 语法杂记
- 黑马程序员-OC语言核心语法(2)构造方法
- 一道小端模式考题
- json解析对象时对象的属性的顺序
- 轮播图-好代码-(jq)
- 【Code Forces 320B】【水题】Finding Team Member 最优组队匹配
- 字节流与字符流的区别
- 黑马程序员----OC语法之简明扼要的总结二
- 蓝懿学习之tableView
- [Android 硬件] Eclipse错误:Conversion to Dalvik format failed with error 1
- 第9章 异常
- Spatial Pyramid Matching for Recognizing Natural Scene Categorie(阅读)
- 【Code Forces 320A】【二进制拆分】Raising Bacteria 细胞繁殖 每天倍增
- 面试总结
- POX安装和部分配置
- c语言小工具