NSArray简介

数组是一个集合类,是有序的,可以根据编制的索引找到想要的结果。OC数组只能存储对象(如字符串、数组、字典等),不能存储基本数据类型(如int,float,char),也不能存储nil。分为不可变数组(NSArray)和不可变数组(NSMutableArray)。不可变数组一经创建就不能对其内容进行操作。本篇文章只介绍NSArray的一些简单用法。NSMutableArray继承自NSArray。

1、不可变数组的创建

1>初始化方法创建

Person* person=[[Person alloc]initWithName:@"zhao"]; //自定义的类

NSArray* arr1=[[NSArray alloc]initWithObjects:@"1",@"2", @"3",person, nil]; //实例方法  注意nil不能少

NSArray *arr3=[NSArray arrayWithObjects:@"one",@"two",@"three",person, nil];//类方法

2>用一个已有数组创建

NSArray *arr2=[[NSArray alloc]initWithArray:arr1]; //实例方法
NSArray *arr4=[NSArray arrayWithArray:arr3]; //类方法

3>最简单的方法

NSArray *arr5=@[@"o1", @"o2", @"o3",@[@"xyz", @"123"]];

2、数组的遍历

NSArray *array=@[@"one", @"two",@"three"];

//得到数组的第一个元素
[array firstObject];

//得到数组的最后一个元素
[array lastObject];

NSUInteger len=array.count;  //得到数组中元素的个数
//常用的一种遍历方法
for(NSUInteger i=0; i<len; i++)
{
   NSLog(@"array[%lu]:%@", i, array[i]);
}
//快速遍历法
for(NSString* obj in array)
{
   NSLog(@"元素:%@", obj);
}
//枚举器法
NSEnumerator * enumerator=[array objectEnumerator];
id obj;
while(obj = [enumerator nextObject])
{
   NSLog(@"枚举器法元素:%@", obj);
}

打印结果:
这里写图片描述


3、数组元素的合并

NSArray *arr=@[@"i", @"love", @"you"];

//componentsJoinedByString:将一个数组以特定字符合并在一起 返回一个不可变字符串
NSString *result =[array componentsJoinedByString:@" "]; //用空格合并
NSLog(@"合并后的结果:%@", result);

打印结果:
这里写图片描述


4、数组的查找

1>indexOfObject: 从前往后查找到第一个相同的元素就返回它的下标

NSArray *array=@[@"123",@"xx", @"abc",@"xx",@"tt",@"xx",@"yy"];

NSUInteger index=[array indexOfObject:@"xx"];

NSLog(@"xx的下标:%lu", index);

2>indexOfObject: inRange: 查找指定范围内的数组是否有相同的元素 并返回第一个下标

index=[array indexOfObject:@"xx" inRange:NSMakeRange(2, 4)];

NSLog(@"指定范围找xx的下标:%lu", index);

3>containsObject: 判断数组中是否包含此元素

BOOL result=[array containsObject:@"abc"];
if(result)
   NSLog(@"abc在数组中");
else
  NSLog(@"abc不在数组中");

4>firstObjectCommonWithArray: 查找两个数组中的第一个公共元素

NSArray *arr1=@[@"wer",@"abc"];

NSString* str=[array firstObjectCommonWithArray:arr1];

NSLog(@"%@", str);

打印结果:
这里写图片描述


5、数组排序

1、数组里是字符串

NSArray *arr = @[@"12", @"34", @"a12", @"#59", @"6756"];
// 升序 按ASCII值得顺序排列
NSArray *ascendSortArr = [arr sortedArrayUsingSelector:@selector(compare:)];
// 降序
NSArray *deSortArr = [ascendSortArr reverseObjectEnumerator].allObjects;

NSLog(@"%@ %@", ascendSortArr, deSortArr);

这里写图片描述

2、数组里是模型,可以按特定属性名对应的属性值排序

// 第一个参数:模型中的属性名  第二个:升序或降序
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"属性名" ascending:YES];

[dataArray sortUsingDescriptors:@[descriptor]];

6、数组的KVC

NSArray * array = @[@{@"name":@"hwc", @"count":@(10),  @"url":@"blog.csdn.net/hello_hwc"}, 
@{@"name":@"baidu",  @"count":@(20), @"url":@"www.baidu.com"}, 
@{@"name":@"google", @"count":@(22), @"url":@"www.google.com"}]; 

NSArray *nameArray = [array valueForKeyPath:@"name"];  
NSNumber *sum = [array valueForKeyPath:@"@sum.count"];  
NSNumber *max = [array valueForKeyPath:@"@max.count"];  
NSNumber *min = [array valueForKeyPath:@"@min.count"];  
NSLog(@"NameArray:%@",nameArray.description);  
NSLog(@"Sum:%@",sum.description);  
NSLog(@"max:%@",max.description);  
NSLog(@"min:%@",min.description); 

打印结果:

NSArray不可变数组[1048:42991] NameArray:(  
    hwc,  
    baidu,  
    google  
)  
NSArray不可变数组[1048:42991] Sum:52  
NSArray不可变数组[1048:42991] max:22  
NSArray不可变数组[1048:42991] min:10  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值