1.NSArry
//创建一个空数组,没有实际意义
NSArray *array1 = [NSArray array];
//创建一个只有一个元素的数组,意义也不大
NSArray *array2 = [NSArray arrayWithObject:@"one"];
//创建一个有多个元素的数组,注意,nil的作用
NSArray *array3 = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
//简化后的创建一个有多个元素的数组
NSArray *array4 = @[@"one", @"two", @"three"];
//创建数组array4的副本(深拷贝(copy))
NSArray *array5 = [NSArray arrayWithArray:array4];
//求数组的长度:数组中的元素个数
NSUInteger length = [array count];
//通过下标,获取数组中的指定元素
NSString *objStr = [array objectAtIndex:0];//使用实例方法的方式
objStr = array[1];//使用下标的方式
//求取数组的最后一个元素
objStr = [array lastObject];
//求取数组的第一个元素
objStr = [array firstObject];
NSLog(@"%@", objStr);
//求一个数组元素在数组中的下标(NSUInteger)无符号整数类
NSUInteger index = [array indexOfObject:@"two"];
//当元素不是数组中的元素时,得到的下标是垃圾值,当斗个元素重复时,得到的是相同元素中最后一个元素
index = [array indexOfObject:@"5"];
//数组的遍历
for (int i = 0; i < [array count]; i++)
NSLog(@"%@", array5[i]);
1.2数组排序
使用sortedArrayUsingSelector这个方法,调用数组TRInteger中的compareInt方法进行排序
NSArray *sorted = [array sortedArrayUsingSelector:@selector(compareInt:)];
NSArray *sorted = [array sortedArrayUsingSelector:@selector(compareFloat:)];//排序方法
-(NSComparisonResult)compareInt:(TRInteger *)other//比较规则//必须是所在类指针//需要。h中声明
{
if (self.integer > other.integer)//前面的对象大于后面的对象,降序输出
return NSOrderedAscending;
else if (self.integer < other.integer)
return NSOrderedDescending;
else
return NSOrderedSame;
}
-(NSComparisonResult)compareName:(TRStudent *)other
{
return [self.name compare:other.name];//NSString类中本身提供了一个compare方法,这里直接返回这个比较的结果就行
}
2.NSMutableArray
可变数组的创建
NSMutableArray *array = [NSMutableArray array];
NSMutableArray *array1 = [NSMutableArray arrayWithCapacity:18];
NSMutableArray *array2 = @[@"one", @"two", @"three"];//退化成不可变数组
NSMutableArray *array3 = [NSMutableArray arrayWithObjects:@"one", @"two", @"three", nil];
向可变数组中添加元素
[array addObject:@"one"];//在数组的末尾添加一个元素
[array insertObject:@"five" atIndex: n];//下标 n 越界(超过预估值)会导致崩溃,从序号n开始的元素向后面移一位
修改数组元素
[array replaceObjectAtIndex:n withObject:@"aaa"];//修改指定下标n的数组元素,仅修改一个元素
//替换
NSRange r = {1, 2};//范围中1为开始的下标,2为连续的元素个数
[array replaceObjectsInRange:r withObjectsFromArray:array2];//array2数组所有元素替换数组array中指定的范围
NSRange r = {1, 2};
NSRange r2 = {0, 2};
[array2 replaceObjectsInRange:r withObjectsFromArray:array2 range:r];
array2数组指定范围元素替换数组array中指定的范围
删除数组元素
[array4 removeLastObject];//删除最后一个元素
[array4 removeObject:@"two"];//删除指定对象,对象不存在时,什么情况都不会发生
[array4 removeObjectAtIndex:0];//删除指定下标的数组元素,当下标不存在时,程序会崩溃
NSRange r = {1, 2};//1为要删除的数组元素开始的下标,2为从开始下标的连续2个元素
[array5 removeObjectsInRange:r];//删除指定范围的元素
[array1 removeObjectsInArray:array2];//删除指定数组中的所有元素,删除多个元素(在数组1中删除与数组2中相同的元素)
[array removeAllObjects];//删除数组中的所有元素,即清空数组