数组和字典

2015-10-12  本文已影响945人  PeterKock

为什么用集合
有时候系统中有很多的对象,我们想要有条理的将其进行管理
首先想到的就是使用数组来管理一批数据
但是数组有局限性,例如下标的检查,我们需要自己进行
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,

上一篇 下一篇

猜你喜欢

热点阅读