一 OC 中的集合类型:
1. 数组 NSArray, 字典 NSDictionary, 集合 NSSet.
2. NSArray 继承自NSObject,用来存储一些有序的对象,不可变数组.
二 NSSArray
1. 创建数组
1⃣自定义初始化方法
NSArray *array = [[NSArray alloc]init]; (空数组)
NSLog(@”%@”,array); 打印出来一对小括号(),( )是数组的打印标识
2⃣ 使用便利构造器的方法创建(空数组 array)
NSAaary *array = [NSArray array];
NSLog(@”%@”,array);
2. 初始化数组(initWithObjects:和arrayWithObjects:)
1⃣NSArray *array = [[NSArray alloc]initWithObjects:@”jack”,@”rose”,nil];
nil是数组结束的标志,使用 initWithObjects 可以添加多个元素.
2⃣arrayWithObjects 是创建数组的便利构造器方法,也可以添加多个元素.
3. 通过下标访问数组中的元素,因为我们数组中的对象是有序的,下标也是从0 开始的.
1⃣获取指定下标的对象(objectAtIndex:)
NSString *str = [array objectAtIndex:0];
2⃣ 获取数组的第一个元素对象(firstObject)
NSString *str = [array firstObject];
3⃣获取数组的最后一个元素的对象(lastObject)
NSString *str =[array lastObject];
4. 获取数组中的元素的个数(count)
NSUInteger n = [array count];
5. 在创建数组的时候,可以创建包含不同类型的元素
NSArray *myArray = nil;
NSDate *aDate = [NSDate distantFuture];
NSValue *aValue = [NSNumber numberWithInt:5];
NSString *aString = @”a string”;
myArray = [NSArrayarrayWithObjects:aDate,aValue,aString,nil];
三可变数组(NSMutableArray)
1. NSMutableArray 可变数组,存储空间是可变的
2. 可变数组的创建也有两种方法:
1⃣ [[NSMutableArray alloc]initWithCapacity: 0];
2⃣ [NSMutableArray arrayWithObjects:@”程序员”,@”设计师”,@”产品够”,@”运营鼠”,@”客服牛”,@”销售猴”,@”总经理”,nil];
3⃣ 向数组中添加对象(可以向可变数组中添加多个元素)
[mArray addObject:@”苍老师”];
3. 将指定数组对象复制到对应数组中(addObjectsFromArray:)
[mArray addObjectsFromArray:array];
4. 指定位置插入对象(insertObject:@”*1*” atIndex:0)
[mArray insertObject:@”*1*” atIndex:0];
5. 删除指定位置的对象(removeObjectAtIndex:)
[mArray removeObjectAtIndex:0];
6. 删除某个对象(removeObject:)
[mArray removeObject:@”3”];
7. 删除最后一个对象(removeLastObject)
[mArray removeLastObject];
[mArray removeObjectAtIndex;(count - 1)];
8. 删除所有的对象,清空数组(removeAllObjects)
[mArray removeAllObjects];
9. 交换两个元素的位置(exchangeObjectAtIndex:2 withObjectAtIndex:1)
[mArray exchangeObjectAtIndex:2 withObjectAtIndex:1];
10. 遍历数组的方法(使用 for 循环,也可以使用快速枚举 forin)
1⃣ for(NSUInteger i = 0;i <[mArray count];i++ ){
NSLog(@”%@”,[mArray objectAtIndex]);
}
2⃣ 快速枚举(增强型 for 循环)
OC中提供的快速遍历集合的循环,使用 for in ,不需要关心数组元素的个数,内部自动处理;每一次循环都把当前数组元素的值赋值给你提供的变量(比如: NSString *str); 在内部添加 NSLog 语句,或者其他功能语句,会出错
注意:在快速枚举中,不能对数据元素做修改操作,比如说删除某个元素
for(NSString *str in mArray){
NSLog(@”%@”,str);
}
11. 数组排序
1⃣ 使用冒泡排序
for(NSUInteger i = 0; i<[mArray count] – 1;i++){
for(NSUInteger j =0; j<[mArray count] – 1 - i;j++){
if([[mArray objectAtIndex:j] compare:[mArrayobjectAtIndex:j+1]] == NSOrderedDescending)
//交换元素的位置
[mArray exchangeObjectAtIndex:j withObjectAtIndex: (j +1)];
}
}
2⃣ 数组排序
@selecor()是一个选择器,()内填写的是选择的方法
NSArray *sort = [mArray sortedArrayUsingSelector:@selector(compare:)];
For(NSString *str in sort){
NSLog(@”%@”,str);
}