#import <Foundation/Foundation.h>
//NSArray 创建不可变数组对象
//OC中的数组是对象的有序集合
//数组存储的是对象的地址(对象的引用)
//不可变数组一旦被创建,不可以继续添加,删除,或者修改
//数组中的元素可以为不同类型的对象
//数值的访问通过数值的下标访问 下标从0开始
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *array1 = @[@"one", @"two", @"three", [NSNumber numberWithInt:456]];
NSLog(@"array1 = %@", array1);
//数组的创建及初始化
NSArray *array2 = [[NSArray alloc] init];
NSLog(@"array2 = %@", array2);
NSArray *array3 = [[NSArray alloc] initWithObjects:@"four", @"five", @"six", nil ];
NSLog(@"array3 = %@", array3);
//通过传入的数组创建数组对象
NSArray *array4 = [[NSArray alloc] initWithArray:array1];
NSLog(@"array4 = %@", array4);
NSArray *array5 = [[NSArray alloc] initWithArray:array3 copyItems:YES];
NSLog(@"array5 = %@", array5);
//常用的类方法;
//通过类方法创建一个空数组对象;
NSArray *array6 = [NSArray array];
//用类方法 传入数组元素创建数组对象
NSArray *array7 = [NSArray arrayWithObjects:@"seven", @"eight", @"nine", nil];
//通过传入数组对象创建数组
NSArray *array8 = [NSArray arrayWithArray:array7];
//创建一个数组对象
NSArray *array9 = [NSArray arrayWithObject:@"ten"];
//数组元素的访问
//获取数组元素的个数
NSInteger count = [array1 count];
NSLog(@"count = %li", count);
//获取指定索引位置的数组对象
id obj1 = [array1 objectAtIndex:2];
NSLog(@"obj1 = %@", obj1);
//使用C语言中下标访问
NSLog(@"obj1 = %@", array1[2]);
//获取数组元素在数组中第一次出现的位置
NSInteger index = [array1 indexOfObject:@"three"];
NSLog(@"%li", index);
//获取数组中第一个和最后一个元素
NSLog(@"第一个元素 = %@", [array3 firstObject]);
NSLog(@"最后一个元素 = %@", [array3 lastObject]);
//数组的比较
NSArray *array10 = @[@"D", @"C", @"B",@"A" ];
NSArray *array11 = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];
BOOL ret = [array10 isEqualToArray:array11];
if(ret == YES) {
NSLog(@"相等");
}
else {
NSLog(@"不相等");
}
//返回两个数组中第一个相等的元素
id obj2 = [array10 firstObjectCommonWithArray:array11];
NSLog(@"%@",obj2);
//数组排序---通常排序的数组的元素是相同类型的
//通常排序数组默认是以从小到大的顺序
//- (NSArray<ObjectType> *)sortedArrayUsingSelector:(SEL)comparator;
//@selector生成选择器
//规则方法的返回值为>0的数的时候。底层交换两个数组元素的位置
NSArray *sortArray = [array10 sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"sortArray = %@", sortArray);
}
return 0;
}