为什么用集合
有时候系统中有很多的对象,我们想要有条理的将其进行管理
首先想到的就是使用数组来管理一批数据
但是数组有局限性,例如下标的检查,我们需要自己进行
Cocoa提供了一系列的集合类可以实现这些批量数据管理的功能
并且提供了很多便利的方法可以对数据进行管理
NSArry类
1.NSArray是一个Cocoa类,用来存储对象的有序列表
2.NSArray中可以放入任何类型的Objective-C对象
3.NSArray中不能存放C语言类型
4.NSArray对象作为一个容器来容纳其他的对象,并且可以通过NSArray对这些对象进行管理
5.NSArray对象也可以当做方法参数或返回值使用
使用NSArry
使用NSArray类时需要注意,不能在其中存放nil,因为nil是一个NSArray结束的标识
通过NSArray的类方法arrayWithObjects:来创建一个NSArray对象
NSArray *array = [NSArray arrayWithObjects : @”one”, @”two”, @”three”, nil ];
获取集合中对象的个数(主要用在循环遍历数组)
-(unsigned long) count;
数组个数.png
获取指定索引处的对象(通过数组的下标来获取对象)
-(id) objectAtIndex : (unsigned long) index;
数组的内容.png
通过循环取得所有的数组对象
当访问NSArray时,索引超出元素个数之后会报一个异常出来
所以最好检查一下索引是否越界,然后再进行调用
下标越界信息提示
可变数组添加对象
-NSArray和NSString一样,创建的是不可变大小的数组,容量固定
-如果想要使用容量变化的数组,可以使用NSMutableArray
-同样的NSMutableArray使用arrayWithCapacity:方法来创建
+(id)arrayWithCapacity:(unsigned long)numItems;
使用addObject方法在数组最后添加对象
-(void) addObject : (id) anObject;
两种创建方式
现在创建一个学生类定义属性,声明一个便利初始化函数
用学生类创建对象,并存入数组中
创建一个学生类.png
便利初始化函数.png
方法的具体实现.png
在main函数中实例化对象,添加到数组中
实例化对象,使用.png
可变数组删除对象
可以使用removeObjectAtIndex方法来删除指定所引出的对象
-(void) removeObjectAtIndex : (unsigned long)index;
这是都似乎删除数组中对象的方法.png
删除数组中对象的方法.png
可变数组的其他操作
用指定索引出插入对象
两种方式添加图片.png
替换指定位置处的对象
-(void)replaceObjectAtIndex:(NSUInteger) withObject:(id)
替换.png
数组的排序
为可变数组排序,常用三种方式
-使用sortUsingComparator方法
-使用sortUsingDescriptors方法
-使用sortUsingSelector方法
升序
降序
快速枚举
//使用id数据类型
for(id obj in array){
NSLog(@“%@\n”,obj);
}
//使用静态类型
for(NSString * str in array){
NSLog(@“%@\n”,str);
}
for方式和快速枚举方法.png
NSDictionary字典
-字典是关键字和其定义所构成的集合
-NSDictionary在给定的关键字下存储一个数据,该数据可以是任何-Objective-C类型
-可以通过这个关键字来访问这个相应的数据
-使用dictionaryWithObjectsAndKeys方法来创建一个字典
-(id) dictionaryWithObjectsAndKeys:(id) obj,…;
创建字典
字典是一个无序的集合
断点调试
使用objectForKey方法获取字典中的值
-(id) objectForKey : (id) aKey;
获取字典中的值.png
获取字典的所有value值
字典中遍历
-字典无法直接使用索引、枚举器或快速枚举来遍历字典中的元素
-字典包含一个方法allKeys,返回所有的Key所构成的一个NSArray
-可以遍历这个NSArray得到每一个Key,然后再根据Key得到相应的数据
-不可变字典和可变字典遍历方式一致
NSSet类
使用NSSET类
NSNumbers创建和使用
NSNull
结合中不能直接放入nil,






网友评论