首页 > 代码库 > OC 数组方法介绍

OC 数组方法介绍

NSArray 是不可变的数组,只能够存放对象,但是可以存放不同类型的对象

首先定义一个类

#import <Foundation/Foundation.h>@interface Person : NSObject@property NSString *name;- (id)initWithName:(NSString *)name;@end
#import "Person.h"@implementation Person- (id)initWithName:(NSString *)name {    if (self =[super init]) {        _name = name;    }    return  self;}@end

数组的初始化

 //创建数组几种形式        NSArray *array = [[NSArray alloc] initWithObjects:p1, @"NSString",@13,nil];//创建一个不可改变的数组 包括多个对象        array = [NSArray arrayWithObjects:p1, @"NSString",@13,nil]; //工程模式创建(便利构造器)建议用这样方式创建(不需要管理内存)        NSLog(@"%@",array);                id ch[4]= {@"AAA",@"BBB",@"CC",@"DDD"};        NSArray *array1 = [[NSArray alloc] initWithObjects:ch count:4];//由一个数组创建        array1 = [NSArray arrayWithObjects:ch count:4];//工厂模式        NSLog(@"%@",array1);               NSArray *array2 = [[NSArray alloc] init];//不可变的空数组        array2 = [NSArray array];        NSLog(@"%@",array2);                array1 = [NSArray arrayWithObject:@"ABC"];//创建一个对象的不可变数组

数组的常用方法测试

 //获取数组长度        NSInteger length = [array count];        NSLog(@"%ld",length);        //获取数组中的对象        id obj = [array objectAtIndex:0];        NSLog(@"%@", obj);        //也可以用下面这种语法        obj = array[0];         NSLog(@"%@", obj);        //获取对象在数组中的位置        NSInteger index = [array indexOfObject:@13];        NSLog(@"%lu", index);        //遍历数组        //1常规方式        for (int i = 0; i < [array count]; i++) {            NSLog(@"%@",array[i]);        }        //2快速遍历        for(id obj in array){            NSLog(@"%@",obj);        }        //将数组转换为字符串        NSArray *pathArray = [NSArray arrayWithObjects:@"here", @"be", @"dragons", p1, @13,nil];        NSLog(@"%@",[pathArray componentsJoinedByString:@"-"]);        //数组比较        NSArray *arrayEqual1 = [NSArray arrayWithObjects:@"here", @"be", @"dragons", p1, @13,nil];        NSArray *arrayEqual2 = [NSArray arrayWithObjects:@"here1", @"be", @"dragons", p1, @13,nil];        NSLog(@"%hhd",[arrayEqual1 isEqualToArray:arrayEqual2]);//结果为0(NO)        NSLog(@"%hhd",[arrayEqual1 isEqualToArray:arrayEqual1]);//1(YES)        //数组的排序                        NSArray *arrSort = @[@"AAA", @"HHH",@"BBB"];        //运用selector        arrSort = [arrSort sortedArrayUsingSelector:@selector(compare:)];        NSLog(@"%@",arrSort);                //运用block        arrSort = [arrSort sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {            return -[(NSString *)obj1 compare:(NSString *)obj2];//倒序        }];         NSLog(@"%@",arrSort);

 

OC 数组方法介绍